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í
Veřejná školení
V červnu pořádám v Praze školení pro veřejnost
🧑🎓 Design REST API🧑🎓 Vývoj REST API