Slovenská verzeSK
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é.

nenechte si ujít

Přednáška Testování REST API

🗓️ Online 10. května 2021, od 16 hodin

Jak lze testovat REST API na platformě .NET 5? Během přednášky si ukážeme aktuální trendy v testování aplikací od nástrojů pro psaní unit testů a integračních testů až po nástroje pro automatické testování a monitoring produkčních REST API.

Registrace zdarma

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.
Loading