=
APIC Tato část webu se věnuje best-practices v souvislosti s architekturou REST API. Je určena zejména pro mé klienty, kterým jsem vytvářel architekturu aplikací. Najdete zde tipy na osvědčené přístupy v souvislosti s architekturou REST API.

Nová implementace pro metodu HttpOptions

Framework má špatnou podporu metody HttpOptions. Dosavadní mé řešení spočívalo v kombinaci middleware a flagování metod v controlleru. Novější řešení je postavené na výchozím chování ASP.NET Core frameworku a je 100% automatizované.

Abstrakt

Metoda HttpOptions je používána zejména při komunikaci v rámci CORS. Lze ale předpokládat, že browser bude vyžadovat informaci o povolených HTTP metodách na zvolené URL právě pomocí OPTIONS metody. Když REST API server odpovídá na OPTIONS požadavek, měl by vrátit metadata popisující vlastnosti komunikace. Typicky se jedná o HTTP hlavičku Allow se seznamem podporovaných HTTP metod na zvoleném resource. Server obvykle nevrací žádný payload a tudíž je typický success code 204 (No Content) v kombinaci s HTTP hlavičkou Content-Length a hodnotou "0".

Dosavadní mé řešení využívalo endpoint routing pro nalezení všech URL, které v projektu podporují OPTIONS metodu a následné vrácení Allow hlavičky na základě dalších objevených HTTP metod na daném resource. Řešení má však jednu nevýhodu. Vývojář musí použít atribut [HttpOptions] na správném místě v controllerech. V případě nepozornosti může způsobit konflikt v URL routách.

Dotčené aplikace

Vylepšení se týká všech zákazníků. Obvyklá implementace je v souboru OptionsMiddleware nebo podobném.

Řešení

Microsoft podporuje metodu HTTP Options jen pokud je tato HTTP metoda byla uvedena jako atribut nad action metodou v controlleru. Toto řešení má však nevýhody a může způsobit konflikty. Zároveň není automatizované. Framework však vrací chybu v případě, kdy HTTP metoda odeslaná klientem není na straně serveru podporována.

Nové řešení staví právě na tomto chování. Pokud framework vrací chybu v případě OPTIONS metody, OptionsMiddleware tuto chybu objeví a přepíše na status 204. Framework vrací automaticky hlavičku Allow s podporovanými metodami, které middleware pouze doplní o metodu OPTIONS.

Ke stažení

Miroslav Holec

Miroslav Holec

7. dubna 2021

ENHANCEMENT Vylepšení stávajícího chování. Obvykle není nutné jej implementovat.

Veřejná školení

V červnu pořádám v Praze školení pro veřejnost

🧑‍🎓 Design REST API
🧑‍🎓 Vývoj REST API

Nový webinář

25. května pořádám webinář o Minimal APIs v .NET 6.

🧑‍🎓 Podrobnosti o webináři

RestApi.CZ

Právě jsem spustil průvodce Designem REST API

📖 Přečíst restapi.cz
kontakt zde

Dotazy, poptávky a objednávky

mirek@miroslavholec.cz
Loading