Beállítás swashbuckle (henceg) számára webapi

Beállítás Swashbuckle (Swagger) a WebAPI 8

  • 11.12.16 06:22 •
  • ETman •
  • • # 317338
  • • Habrahabr
  • 11 •
  • 2700

- mint a Forbes, csak jobb.

Rögzítse a projekt


Swashbuckle - NuGet ez a csomag van építve az automatikusan generált WebAPI csomópont információk szerint a specifikáció OpenAPI. Ez a specifikáció, de facto standard, mint egykor a WSDL. Telepíthető, úgy négy egyszerű lépésben.

Árnyalatok a Deploe WebAPI


Amikor deploe WebAPI termelés probléma lehet azzal a ténnyel, hogy az XML fájl hiányzik. Release összeállítás nem tartalmazza azokat az alapértelmezett, de lehet megkerülni ezt, fájl szerkesztésével csproj. Meg kell adni a projekt PropertyGroup hamis és a fájl marad a bin /.

További problémát jelent azok számára, akik várakozás elrejtse API proxy. A megoldás nem általános, de az én esetemben működik. Proxy hozzáteszi fejlécek rekvest amelyben megtudjuk, hogyan lehet endponitov URL az ügyfél számára.

Példa Detect URL a proxy

Hozzáadása Response kódok

Példák az adagolás kódok állapotát

A lusta ott van a lehetőség, hogy adjunk a közös kód (például 400 (BadRequest), illetve 401 (jogosult)) azonnal az összes módszerre. Ehhez meg kell valósítani IOperationFilter felület és regisztrálja az osztály c.OperationFilter();.

Módszert alkalmazzák például a hozzá listáját kódok

Beépített böngésző


Hozzátéve, hogy WebAPI konfiguráció, a böngésző bekéri adatok hitelesítése idején a kérelmet. A komplexitás az, hogy ezek az adatok nem veszít olyan könnyen és gyorsan, hogyan kell beírni.


Egy másik módszer sokkal kényelmesebb ebben a tekintetben, mert Ez egy speciális formája. Ahhoz, hogy a beépített hitelesítési forma szükséges ahhoz, hogy a csomag az alábbiak szerint:

Végrehajtását a módszer Alkalmazza a szűrőt

Hozzátéve ezt a paramétert

Például JS küldő fejléceket Swagger

Együtt dolgozunk a kötelező Heder

Endpointy a túltöltött módszerekkel


WebAPI fellépés lehetővé teszi számos módszer egyik endpointa hívó függ a lekérdezési paramétereket.


Ezek a módszerek nem támogatja az alapértelmezett és Swagger UI hibát jelez 500: Nem támogatja a Swagger 2.0: Többszörös műveletek path „api /És módszer "”. Lásd a config beállítást - \ «ResolveConflictingActions \» a lehetséges megoldás.

Valamint azt tanácsolja a jelentés legyen önállóan oldja meg a helyzetet, és van több lehetőség:

  1. válasszon csak egy módszer
  2. Az egyik módszer, hogy nem az összes lehetőséget
  3. változás dokumentum generáció

az első és a második eljárás felhasználásával vannak megvalósítva c.ResolveConflictingActions konfiguráció (Func, ApiDescription> conflictingActionsResolver). A módszer lényege az, hogy biztosítsa, hogy néhány ütköző módszerek és vissza egy.

Egy példa arra, hogyan egyesítse az összes paramétert

A Cardinal módszer


A harmadik módszer sokkal fontosabb az a kisülési az OpenAPI a specifikáció. Megjelenítheti az összes endpointy paraméterekkel:

Ehhez meg kell változtatnia a létrehozási módja Swagger dokumentumot IDocumentFilter és létrehozza a saját leírását.

Az életben, ez a módszer csak ritkán van szükség, így ásni még mélyebb. Egy másik módja, amely azt ajánlom csak azoknak, akik érdeklődnek a belsejét Swashbuckle -, hogy cserélje SwaggerGenerator. Ez összhangban c.CustomProvider (defaultProvider => új NewSwaggerProvider (defaultProvider));. Ehhez megteheti:

  1. hozzon létre az osztály MySwaggerGenerator: ISwaggerProvider
  2. A Swashbuckle adattár GitHubról találják SwaggerGenerator.cs (ez itt)
  3. GetSwagger másolat módszer és egyéb technikák kapcsolódik a
  4. ismétlődő belső változók és inicializálni őket a kivitelező az osztály
  5. Egy konfigurációs regiszter Swagger

Formázza meg a belső változók


Ezt követően meg kell találni a helyét var utak = GetApiDescriptionsFor (apiVersion). Ez az a hely, ahol létrehozza az utat. Például, hogy elérjük, hogy a példa kell GroupBy () helyébe .GroupBy (apiDesc => apiDesc.RelativePath).

irodalom

Kapcsolódó cikkek