ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ swagger ΠΏΡΠΎΡΡΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ
Swagger β ΡΠΌΠ½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ RESTful web-API β ΠΎΠ±Π·ΠΎΡ Junior back-end developer-Π° Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ²
ΠΡΠ΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅
ΠΠΎΠΌΠ°Π½Π΄Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΠ΄Π΅Π»Π°Π»Π° ΡΠ²ΠΎΠΈ ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠ°Π³ΠΈ Π½Π° ΠΏΠΎΠΏΡΠΈΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π·Π°Π½ΠΈΠΌΠ°Π»Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ API ΠΊ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π½Π° C# (Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π±ΡΠΊΠ²ΠΎΠΉ E), ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π²ΡΠ΅Π³ΠΎ ΡΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ ΠΈ Π·Π°ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π²ΡΠ΅Π³ΠΎ ΡΠ΅Π±Ρ Π½Π° ΡΡΠ½ΠΊΠ΅ Ρ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ. Π Π·Π΄Π΅ΡΡ Π²ΡΠΎΠ΄Π΅ Π±Ρ Ρ ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°Π΄Π°Π²Π°Π½Π° ΠΏΠΎΠΊΠ° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ², ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΡΠ΅Π±Π΅, ΡΡΠΎ ΡΠ°Π½Π΅Π΅ Π²Ρ, ΡΠΊΠΎΡΠ΅ΠΉ Π²ΡΠ΅Π³ΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΠΈΡΠ°Π»ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ web-API, Π½ΠΎ Π²ΡΡΠ΄ Π»ΠΈ Π΄Π»Ρ ΡΠΈΡΠΎΠΊΠΎΠΉ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΠΈ, Π° Π·Π½Π°ΡΠΈΡ ΠΆΠΈΠ»ΠΈ ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Β«Π‘Π°ΠΌ ΡΠΎΠ·Π΄Π°Π» β ΡΠ°ΠΌ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΒ», ΠΈ Π΅ΡΠ»ΠΈ Π²Π΄ΡΡΠ³ ΠΊΠΎΠ³ΠΎ-ΡΠΎ Π±Ρ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π»Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ API, ΡΠΎ Π²Ρ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΊΠΈΠ½ΡΠ»ΠΈ Π±Ρ Π΅ΠΌΡ pdf-ΡΠ°ΠΉΠ» Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ Ρ Π±Ρ ΡΠ΄Π΅Π»Π°Π»Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ). Β«ΠΠ΄Π΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π°ΠΏΠΈΒ» β ΡΠΏΡΠΎΡΠΈΠ»Π° Ρ ΡΠΈΠΌΠ»ΠΈΠ΄Π° ΠΎΠΆΠΈΠ΄Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ. Β«ΠΠ°Π³Π»ΡΠ½ΠΈ Π² SwaggerΒ» β ΠΎΡΠ²Π΅ΡΠΈΠ» ΠΎΠ½.
ΠΠΎΡΡΠΎΠΉ, ΠΊΠ°ΠΊ ΡΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΡΠ΅Ρ ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ, Π° API Π²Ρ ΠΊ Π½Π΅ΠΌΡ ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΉΡΠ°Ρ?
ΠΡΠ΅ Π²Π΅ΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ API Ρ E Π΄ΠΎ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΎ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ° ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΠ»Π° ΡΠ΅ΡΠ΅Π· web-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π° back-end ΡΠΎΡΡΠΎΡΠ» ΠΈΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΈΠ·Π²Π½Π΅ Π±Π΅Π· ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ, ΡΠΆ Π½Π΅ Π³ΠΎΠ²ΠΎΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΌΠΈ ΠΎΠ½ΠΈ Π½Π° Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄ΠΎΠ»Ρ ΡΠΎΡΡΠΎΡΠ»ΠΈ ΠΈΠ· Π»Π΅Π³Π°ΡΠΈ. ΠΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Ρ
ΠΎΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π°ΠΏΡΡΠΌΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ, Π° Π·Π½Π°ΡΠΈΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΈΠΌ ΠΊΡΠ°ΡΠΈΠ²ΠΎΠ΅ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎΠ΅ API. Π§ΡΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ? ΠΡΠ΅, ΠΎ ΡΠ΅ΠΌ Π±ΡΠ»ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ ΡΡΡΡ ΡΠ°Π½ΡΡΠ΅ β ΡΠ°ΠΌΠΈΠΌ Π²Π·ΡΡΡ ΠΈ Π½Π°Π»Π°Π΄ΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠ΄ΠΎΠ±Π½ΡΡ ΠΈ ΠΊΡΠ°ΡΠΈΠ²ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΡΠ΄Π΅Π»Π°Π² ΡΡΠΎ ΠΊΡΠ°ΡΠΈΠ²ΠΎ, ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΠΈ ΡΠ°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ β ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ.
Π₯ΠΎΡΠΎΡΠΎ, ΡΠ°ΠΊ ΡΡΠΎ ΠΆΠ΅ Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠ΅ Swagger ΠΈ Π² ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡΡ ΠΌΠΈΡΡ?
ΠΠΎ ΡΡΡΠΈ Swagger β ΡΡΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ RESTful API. ΠΠ³ΠΎ ΠΏΡΠ΅Π»Π΅ΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, Π½ΠΎ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π·Π°ΠΏΡΠΎΡΡ β ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ Swagger UI, Π²ΠΎΡ ΡΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ:
ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ β ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΠ΄Ρ ΠΎΡΠ²Π΅ΡΠΎΠ², ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΏΡΠΎΡΠ° β Π² ΠΎΠ±ΡΠ΅ΠΌ, Π½Π°Π³Π»ΡΠ΄Π½ΠΎ.
Π ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ?
ΠΡΠ»ΠΈΡΠ½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π΄Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Swagger Π² ASP.NET Core
Ρ Π½ΡΠ»Ρ Π΅ΡΡΡ Π²ΠΎΡ Π² ΡΡΠΎΠΉ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΠ΄Π΅Ρ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² API, Π²ΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
Swagger Codegen
ΠΡΠ»ΠΈ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠ΅ΡΡΡ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ API Swagger, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ΅Π½ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΊΠΎΠ΄Π° Swagger-Codegen. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π΄ΡΠΌΠ°Ρ, ΠΏΠΎΡΡΠ½ΡΡΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ:
This is the Swagger Codegen project, which allows generation of API client libraries (SDK generation), server stubs and documentation automatically given an OpenAPI Spec. Currently, the following languages/frameworks are supported:
ΠΡΠΎΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π·Π΄Π΅ΡΡ:
ΠΠ±ΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ
Swagger: ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅, ΠΈ ΠΊΠ°ΠΊ Ρ Π½ΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ?
ΠΠ»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ API. ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΊΡΡΡΡΠΌ Π΄Π»Ρ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈΠ»ΠΈ ΠΎΡΠΊΡΡΡΡΠΌ. Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΄Π΅Π»ΡΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π΅Π³ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΡΠΎ Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½ΠΎΠ²ΡΠ΅ ΡΠ»Π΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π±ΡΡΡΡΠ΅Π΅ ΠΈ ΠΏΡΠΎΡΠ΅ Π²ΠΎΠ²Π»Π΅ΠΊΠ°Π»ΠΈΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ.
Π ΡΡΠ½ΠΎΠ΅ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ β ΡΡΠΎΠΌΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π°Π½ΡΡΠΈΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π»ΠΈ Swagger. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ API.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Swagger?
Swagger β ΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ API. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π΅ΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈ ΠΌΠ°ΡΠΈΠ½Ρ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ REST API Π±Π΅Π· Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΠΎΠ΄Ρ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Swagger ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΡΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π΅Π΅ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ.
Π 2015 Π³ΠΎΠ΄Ρ ΠΏΡΠΎΠ΅ΠΊΡ Swagger ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ OpenAPI Initiative. Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΠΌΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ OpenAPI. Swagger β ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ OpenAPI, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ ΠΈ Π½Π΅ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°Ρ . ΠΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅Ρ ΡΠ°ΠΌΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Swagger, ΡΠΎ ΡΡΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π²Π΅ΡΠ½ΠΎ.
ΠΠΎΠΊΡΠΌΠ΅Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ YAML, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON. Π‘Π°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ JSON.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ
Swagger ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΊ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΡΠΎΡΠ΅. ΠΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. Π‘Π°ΠΌ ΠΊΠΎΠ΄ ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΌΠ΅Π½Π΅Π΅ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠΎΠΆΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠΉ. ΠΠΎ Π·Π°Π΄Π°ΡΠ° ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΠ΅ΡΠ΅Π½Π° β ΠΊΠΎΠ΄ Π·Π°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΡΠΎΡΡΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ, Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Swagger. ΠΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΎΡΠΎΠ²ΠΈΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ YAML/JSON. ΠΠΎΠΆΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΡΡ Π·Π°Π΄Π°ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Swagger Editor. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΈ ΠΊΠ°ΡΡΠΎΠΌΠ½ΠΎΠΉ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ, ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ Π²ΡΠ΅ Π½Π΅ ΡΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠΈΠ»ΠΈΠΉ.
Swagger Core
ΠΡΠΎ Java-ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ»Ρ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ:
ΠΠ»Ρ Π΅Π³ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π²Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΡ:
ΠΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± β Π½Π°ΡΡΡΠΎΠΈΡΡ maven-ΠΏΠ»Π°Π³ΠΈΠ½. Π’ΠΎΠ³Π΄Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π±ΡΠ΄ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΡΠ°ΠΉΠ» YAML. ΠΡΠΈΠΌΠ΅Ρ:
ΠΠΎΡΠ»Π΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ | ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ |
@Operation | ΠΠ»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° HTTP |
@Parameter | ΠΠ»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ |
@RequestBody | ΠΠ»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π»Π° Π·Π°ΠΏΡΠΎΡΠ° Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ |
@ApiResponse | ΠΠ»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π»Π° ΠΎΡΠ²Π΅ΡΠ° Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ |
@Tag | ΠΠ»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π³ΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ OpenAPI |
@Server | ΠΠ»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ OpenAPI |
@Callback | ΠΠ»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π½Π°Π±ΠΎΡΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² |
@Link | ΠΠ»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π»Ρ ΠΎΡΠ²Π΅ΡΠ° |
@Schema | ΠΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ |
@ArraySchema | ΠΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠΈΠΏΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² |
@Content | ΠΠ»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡ Π΅ΠΌΡ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π΄Π»Ρ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠ° |
@Hidden | ΠΠ»Ρ ΡΠΊΡΡΡΠΈΡ ΡΠ΅ΡΡΡΡΠ°, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° |
Swagger Codegen
ΠΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ API, Π·Π°Π³Π»ΡΡΠ΅ΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Swagger Codegen Π½Π° GitHub.
Π ΡΡΠΎΠΌ ΠΆΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Π²Ρ Π½Π°ΠΉΠ΄ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ.
API ΠΊΠ»ΠΈΠ΅Π½ΡΡ | ActionScript, Ada, Apex, Bash, C#, C++, Clojure, Dart, Elixir, Elm, Eiffel, Erlang, Go, Groovy, Haskell, Java (Jersey1.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx, Google API Client Library for Java, Rest-assured), Kotlin, Lua, Node.js, Objective-C, Perl, PHP, PowerShell, Python, R, Ruby, Rust (rust, rust-server), Scala (akka, http4s, swagger-async-httpclient), Swift (2.x, 3.x, 4.x, 5.x), Typescript |
ΠΠ°Π³Π»ΡΡΠΊΠΈ | Ada, C# (ASP.NET Core, NancyFx), C++ (Pistache, Restbed), Erlang, Go, Haskell (Servant), Java (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, RestEasy, Play Framework, PKMST), Kotlin, PHP (Lumen, Slim, Silex, Symfony, Zend Expressive), Python (Flask), NodeJS, Ruby (Sinatra, Rails5), Rust (rust-server), Scala (Finch, Lagom, Scalatra) |
ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ | HTML, Confluence Wiki |
Π€Π°ΠΉΠ»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ | Apache2 |
ΠΡΡΠ³ΠΎΠ΅ | JMeter Π΄Π»Ρ Π½Π°Π³ΡΡΠ·ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ |
ΠΠ»ΡΡΡ Swagger Codegen:
Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Swagger Codegen Π² ΠΏΡΠΎΠ΅ΠΊΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ:
ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ Swagger Core, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ maven-ΠΏΠ»Π°Π³ΠΈΠ½ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈΠ»ΠΈ ΠΌΠΎΠΊ-ΡΠ΅ΡΠ²Π΅ΡΠ°.
Swagger Codegen ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
Swagger UI
Swagger UI Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠ΅ΡΡΡΡΡ OpenAPI ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π½ΠΈΠΌΠΈ Π±Π΅Π· ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π»ΠΎΠ³ΠΈΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π±Π΅ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ Π΅Π΅ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ API.
Swagger Editor
ΠΡΠΎ ΠΎΠ½Π»Π°ΠΉΠ½-ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ API Π²Π½ΡΡΡΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ°. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π² ΡΠ΅Π°Π»ΡΠ°ΠΉΠΌΠ΅. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Ρ ΠΏΠΎΠ»Π½ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠ»ΡΡΡ Swagger Editor:
ΠΠ΅ΡΡ Π½ΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI 3.0 ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΠΎΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠ½ΡΡΡΠΈ ΡΡΠΈΡ Π²Π΅ΡΡ Π½Π΅ΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠ°Π²Π°ΠΉΡΠ΅ Π΄Π°Π»Π΅Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ.
ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΈ ΡΠ°ΠΌΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI. ΠΡΠΈΠΌΠ΅Ρ:
Π ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ info ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± API: Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, Π²Π΅ΡΡΠΈΡ, ΡΡΡΠ»ΠΊΠΈ Π½Π° Π»ΠΈΡΠ΅Π½Π·ΠΈΡ, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠ΅ Π²ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ ΠΊ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΏΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π·Π°ΠΏΡΠΎΡΠ°Ρ ΡΠ΅ΡΠ΅Π· API. ΠΠΎΠ΄ Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΏΡΡΡΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠ°ΡΡΡ Π°Π΄ΡΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ. Servers ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΊΠ°Π·ΡΠ²Π°Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°Π΄ΡΠ΅ΡΠΎΠ² Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
Π ΡΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Ρ ΡΠ°Π½ΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡ Π΅ΠΌΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. Π‘Ρ Π΅ΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΡΡΡ ΡΡ Π΅ΠΌΡ ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΡ Π΅Ρ Π½ΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ.
ΠΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² API.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ OAuth2 :
Π ΡΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ½Π»Π°ΠΉΠ½-ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Swagger ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ. ΠΠ½ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π‘Π»Π΅Π²Π° Π²Ρ ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, Π° ΡΠΏΡΠ°Π²Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Swagger UI. Π Π½Π΅Π³ΠΎ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π·Π°ΠΏΡΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΡΠ°Π·Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄Π°.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Petstore Π΄Π»Ρ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π°
ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°ΡΡΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΆΠΌΠΈΡΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Authorize ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ OAuth 2.0. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΠΊΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅Π»ΡΡ , Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ Π·Π° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π½Π΅Ρ. Π’Π°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΊΡΡΡΡ ΠΎΠΊΠ½ΠΎ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠ°
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ Π·Π°ΠΏΡΠΎΡ ΠΊ API. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ:
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°
ΠΠ°ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ Π·Π°ΠΏΡΠΎΡ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΠΈΡΠΎΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½.
Π ΠΎΡΠ²Π΅ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡΡΡ ΠΈΠΌΡ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π½Π΅Π΅ ΠΏΠΈΡΠΎΠΌΡΠ°.
ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠ°ΠΉΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ»ΠΈ Π²ΡΡΡΠΎΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Swagger Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠ΅ΡΡΡΡΠ° β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠΏΡΠ°Π²ΠΊΡ ΠΎ ΡΠ°Π±ΠΎΡΠ΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°.
ΠΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΡΠ°ΠΉΡΡ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ Swagger UI
ΠΠΎΡ Π΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Swagger:
ΠΠ±ΡΠ°ΡΠ°Π΅Ρ Π½Π° ΡΠ΅Π±Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΡΠ°ΡΠΊΠΎΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Swagger. ΠΡΠΎ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ Swagger UI ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ΅Ρ ΡΠΌΡΡΠ»Π° ΡΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΡΡΠ°Π½Π½ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΡΠ²Π΅ΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ.
ΠΠ°ΠΊ Π²ΡΡΡΠΎΠΈΡΡ Swagger UI Π² ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ°ΠΉΡ
Π§ΡΠΎΠ±Ρ Π²ΡΡΡΠΎΠΈΡΡ Swagger UI Π½Π° ΡΠ²ΠΎΠΉ ΡΠ°ΠΉΡ:
ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. ΠΡΠ»ΠΈ Π²ΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΏΠ°ΠΏΠΊΡ dist (Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ) Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ°ΠΉΡ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Swagger β ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ API, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π²ΡΠ΅ΠΌΡ. ΠΠ½ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ, Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ, ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ.
Π§ΡΠΎΠ±Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ ΡΠΎ Swagger Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΠΈ Π²ΠΈΠ΄Π΅ΠΎ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΡ Π΄ΠΎΠΊΠ»Π°Π΄ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΈΡΠ°ΡΠ΅Π»Ρ ΠΈΠ· Β«Π―Π½Π΄Π΅ΠΊΡΠ°Β» ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π²ΠΎΠΎΠ±ΡΠ΅ API ΠΈ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ Swagger. ΠΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄Π΅Π»Π΅Π½ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ β Π² Π½Π΅ΠΉ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ Swagger, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠ΅ΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² Swagger UI ΠΈ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΡΡ ΠΎΠ΄Π½ΠΎ ΠΊΠ»Π°ΡΡΠ½ΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ β ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Swagger:
Swagger
ΠΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠ°ΡΡΠΎ Π²ΡΡΠ°Π΅Ρ Π·Π°Π΄Π°ΡΠ° ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ.
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π΄Π΅ΡΡΡΠΈΠ»Π΅ΡΠΈΠ΅ ΠΎΠ³ΡΠΎΠΌΠ½ΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ SPA ΠΈ thick ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΡΠ΅ΡΠ΅Π· API ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ.
ΠΡΠ»ΠΈ ΡΠ°Π½ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²Π΅Π± ΡΠ°ΠΉΡΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ»Π° ΠΏΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ°ΠΏΠ½ΡΡ ΠΏΡΠ°Π²ΠΎΠΊ ΠΊΠΎΠ΄Π° ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ HTML ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ Ρ Π΅Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ Π±ΡΠ°ΡΠ·Π΅ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ Π²Π΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠΌΠ΅ΡΡΠΈΠ»Π°ΡΡ Π² ΡΡΠΎΡΠΎΠ½Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ API ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ SPA) ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ ΡΡΠΈΠΌ API ΠΊΠ°ΠΊ Ρ Π³Π»Π°Π²Π½ΡΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ Π΄Π°Π½Π½ΡΡ .
Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ Π·Π°Π΄Π°ΡΠΈ, ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΠΈΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡ (ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ·ΠΊΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ²), ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π½Π° ΡΠ°ΠΌΡΡ ΠΏΠ΅ΡΠ²ΡΡ ΡΡΠ°ΠΏΠ°Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π΅Π΄ΠΈΠ½ΡΡ ΡΠΎΡΠΊΡ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ β API ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
Π’Π°ΠΊΠ°Ρ Π΅Π΄ΠΈΠ½Π°Ρ ΡΠΎΡΠΊΠ° ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, ΡΡΠΈΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ API ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ.
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ (ΠΌΠΈΠΊΡΠΎ)ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ β ΡΡΠΎ REST
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ REST Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ URL, HTTP ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈ ΡΠΎΡΠΌΠ°ΡΠ° ΠΎΡΠ²Π΅ΡΠ°.
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°ΠΊΠΆΠ΅ Π·Π½Π°ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΡΠΌΠ°Ρ ΡΠ΅Π»Π° Π·Π°ΠΏΡΠΎΡΠ°. ΠΠ±ΡΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ REST ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π±Π°Π·ΠΈΡΡΠ΅ΡΡΡ Π½Π° ΠΎΠ±ΡΠΈΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°Ρ ΠΈ ΡΡΠ°Π΄ΠΈΡΠΈΡΡ , ΠΏΡΠΈΠ½ΡΡΡΡ Π² Π²Π°ΡΠ΅ΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ.
Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, REST endpoints Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
ΠΠΎΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌΠΈ Π² API-ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² Π² ΠΊΠΎΠ΄Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ ΡΡ Π΅ΠΌ ΠΠ Π²Π²ΠΎΠ΄ΡΡΡΡ ΡΠΊΠΎΡΠ΅Π΅ Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π»Π΅Π³ΠΊΠΎ ΡΠΈΡΠ°ΡΡ, ΠΏΠΈΡΠ°ΡΡ, ΠΏΠ°ΡΡΠΈΡΡ, Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΈ ΠΏΡΠΎΡΠ΅Π΅.
Swagger β ΡΡΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ REST APIs Π² ΡΠΎΡΠΌΠ°ΡΠ΅, Π΄ΡΡΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ JSON ΠΈΠ»ΠΈ YAML). ΠΠΎΠ·ΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π»ΡΡ Π² OpenApi, Π½ΠΎ Π²ΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠΌΠΈΠ½ ΡΠ²Π°Π³Π³Π΅Ρ.
ΠΠΎ Swagger β ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ Π΅Π³ΠΎ ΠΌΠΎΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ , Π²ΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ:
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ Π»Π΅ΠΆΠΈΡ ΡΠ°ΠΉΠ» ΡΠΎ Swagger ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΈ Ρ ΡΠ°Π½ΠΈΡΡΡ ΡΡΠΎ Π²ΡΠ΅ ΠΏΡΡΠΌΠΎ Π² git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ. ΠΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠ°ΠΊ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Swagger generator, ΡΠ°ΠΊ ΠΈ Π·Π°ΠΏΠΈΡΠ°Π½Ρ ΡΡΠ΄Π° Π²ΡΡΡΠ½ΡΡ.
ΠΡ
Π»Π΅Π³ΠΊΠΎ ΡΠ°ΡΠΏΠ°ΡΡΠΈΡΡ, ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ REST endpoints ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠ΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ Π±ΡΠ΄ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΠΈ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΡΠΈΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π² Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ.
ΠΠ»ΡΡ ΠΈΠΌΠ΅Π΅ΠΌ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠ΅Π»ΠΈΠ·Π°ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ Π·Π°Π΄Π°ΡΡ Π΄Π»Ρ ΠΠΆΠ΅Π½ΠΊΠΈΠ½ΡΠ° (ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ CI ΡΠ΅ΡΠ²Π΅ΡΠ°), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»Π½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΡΠ° Π·Π°Π΄Π°ΡΠ° ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ Swagger ΡΠ°ΠΉΠ»Ρ ΠΈΠ· Π²ΡΠ΅Ρ
ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ (Π΄Π΅Π΄ΡΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ, ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π½ΡΠΆΠ½ΡΡ
Π°ΡΡΠΈΠ±ΡΡΠΎΠ²) ΠΈ Π½Π° Π²ΡΡ
ΠΎΠ΄Π΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π΅Π΄ΠΈΠ½ΡΠΉ Swagger ΡΠ°ΠΉΠ», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΏΠΎΠ»Π½ΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π¦Π΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ β ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π³. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ β ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΡΠ΅ΡΡΠ΅ΡΠΎΠ² ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΡΡ Π»ΡΠ΄Π΅ΠΉ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. Π Swagger UI β ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎ, ΡΡΠΎ Π²Π°ΠΌ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ. ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ JavaScript Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Swagger UI Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ HTML ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ Π²Π°ΡΠΈΡ REST endpoints, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°Π»Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ HTML ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ.
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ:
API Blueprint
RESTful API Modeling Language (RAML)
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ»ΡΡΡ swagger:
ΠΠΈΠ½ΡΡΡ:
ΠΡΠΎΡΡΠΎ ΡΠΈΡΠ°ΡΠ°
ΠΡΠΎΡΡΠΎΡΠ° β ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π»ΡΡΡΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ² ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°.
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Swagger UI
Swagger UI ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΈΡΠ°Π΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ OpenAPI. ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ. Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Swagger.
ΠΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±Π·ΠΎΡ OpenAPI ΠΈ Swagger ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΠ½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠΌΠΈ OpenAPI ΠΈ Swagger. ΠΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI ΡΠΌΠΎΡΡΠΈΠΌ Π² ΠΠ±Π·ΠΎΡΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° OpenAPI 3.0.
ΠΠ±Π·ΠΎΡ Swagger UI
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ ΡΠ³Π»ΡΠ±ΠΈΠΌΡΡ Π² Swagger, Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠ½ΠΈΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Ρ.
Swagger
OpenAPI
ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI. Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ OpenAPI ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°Π±ΠΎΡ ΡΠ²ΠΎΠΉΡΡΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ REST API. Π Π°Π±ΠΎΡΠΈΠΉ, Π²Π°Π»ΠΈΠ΄Π½ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ SDK, Π·Π°ΠΏΡΡΠΊΠ° ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΡΡΠΈΡΡ Π½Π° GitHub ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ https://github.com/OAI/OpenAPI-Specification. Π ΡΠ°ΠΌΠΊΠ°Ρ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Ρ Open API Ρ Linux Foundation ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ OpenAPI Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π° ββΠ½Π° ΡΠΎ, ΡΡΠΎΠ±Ρ Π±ΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΉ ΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ (ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΡΠ°ΡΡΠ²ΡΡΡ Π² Π΅Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅).
Swagger Editor
ΠΠ½Π»Π°ΠΉΠ½-ΡΠ΅Π΄Π°ΠΊΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ OpenAPI Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI. Π Π΅Π΄Π°ΠΊΡΠΎΡ Swagger ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ Π΄Π°Π΅Ρ ΡΠΎΠ²Π΅ΡΡ ΠΏΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Swagger UI
Swagger Codegen
ΠΠ½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ ΡΠΎ Swagger ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Petstore
Π§ΡΠΎΠ±Ρ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Swagger, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ Swagger Petstore. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Petstore ΡΠ°ΠΉΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Swagger UI.
ΠΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠ°
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π΄Π΅Π»Π°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π·Π°ΠΏΡΠΎΡΡ, Π½ΡΠΆΠ½Π° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ. ΠΠ°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ Authorize ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ Π² ΠΎΠΊΠ½Π΅ Β«ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡΒ», ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅:
ΠΡΠΈΠΌΠ΅Ρ Petstore ΠΈΠΌΠ΅Π΅Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ OAuth 2.0. ΠΠΎΠ΄ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅Π»Π΅ΠΉ. ΠΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠ°
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π·Π°ΠΏΡΠΎΡ:
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Swagger ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ curl. Π Π°Π·Π΄Π΅Π» ΠΡΠ²Π΅ΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎΡΠ²Π΅Ρ. (ΠΡΠ»ΠΈ Π²ΡΠ±ΡΠ°ΡΡ JSON Π²ΠΌΠ΅ΡΡΠΎ XML Π² ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΠ΅ΠΌΡΡ ΡΠΏΠΈΡΠΊΠ΅ Β«Response content typeΒ», ΡΠΎΡΠΌΠ°Ρ ΠΎΡΠ²Π΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON.)
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΈΡΠΎΠΌΡΠ°
ΠΡΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΉΡΠΎΠ² Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΏΠΎ Swagger UI
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ API Ρ ΡΡΠΈΠΌ ΠΏΠΎΡΠΎΠ±ΠΈΠ΅ΠΌ ΠΏΠΎ Swagger (ΠΊΡΠΎΠΌΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ Petstore), ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Swagger:
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡ ΡΠ°ΠΉΡΠΎΠ² Π²ΡΠ³Π»ΡΠ΄ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, Π½ΠΎ Π΄ΡΡΠ³ΠΈΠ΅, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ The Movie Database API ΠΈ Zomato, Π±ΡΠ»ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Ρ Π² ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡ ΠΈΡ ΡΠ°ΠΉΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
👨💻 ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π°Π½ΡΡΠΈΠ΅: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI Π² Swagger UI
ΠΠ° ΡΡΠΎΠΌ Π·Π°Π½ΡΡΠΈΠΈ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π² Swagger UI Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI. ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² OpenAPI, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π·Π΄Π΅ΡΡ: OpenWeatherMap Swagger UI ΠΈΠ»ΠΈ Sunrise/sunset Swagger UI).
ΠΠ»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI Π² Swagger UI:
ΠΠ½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠΌΠΈ OpenAPI ΠΈ Swagger
OpenAPI ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ REST API. ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ OpenAPI ΠΊΠ°ΠΊ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ DITA. Π DITA ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ XML, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠΏΡΠ°Π²ΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΈ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². Π Π°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΌΠΎΠ³ΡΡ ΡΠΈΡΠ°ΡΡ DITA ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²Π΅Π±-ΡΠ°ΠΉΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
Π OpenAPI Π²ΠΌΠ΅ΡΡΠΎ XML ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π°Π±ΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² JSON Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΡ Π΅ΠΌΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΈΡ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅. ΠΡΠΎΡ ΡΠ°ΠΉΠ» JSON (ΡΠ°ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² YAML Π²ΠΌΠ΅ΡΡΠΎ JSON) ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ°ΡΡΡ API. ΠΠΏΠΈΡΡΠ²Π°Ρ API Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± API ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π² ΡΡΠΈΠ»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.
ΠΠ·Π³Π»ΡΠ΄ Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ OpenAPI
Π§ΡΠΎΠ±Ρ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ OpenAPI, Π΄Π°Π²Π°ΠΉΡΠ΅ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ΄Π΅ΡΠΆΠΊΠΈ ΠΈΠ· ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. Π£Π³Π»ΡΠ±ΠΈΠΌΡΡ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π°Ρ .
ΠΡΠΎ ΡΠΎΡΠΌΠ°Ρ YAML, Π²Π·ΡΡ ΠΈΠ· Swagger PetStore
ΠΠΎΡ ΡΡΠΎ Π·Π½Π°ΡΠ°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΡΡΠΎΠΌ ΠΊΠΎΠ΄Π΅:
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ
ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ Swagger. Π Π΅Π΄Π°ΠΊΡΠΎΡ Swagger Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅Π½Ρ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π²Π°Π»ΠΈΠ΄Π½ΠΎΠΉ.
ΠΡΠ»ΠΈ Π΄ΠΎΠΏΡΡΡΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ Swagger, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΡΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π΅Π΅, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΆΠ΄Π°ΡΡ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΡΡΡΡΠ°Π½ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ.
YAML Π·Π°Π²ΠΈΡΠΈΠΌ ΠΎΡ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² ΠΈ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΠΉ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π’Π°ΠΊΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½Π½ΠΎ-ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ Π΄Π»Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Ρ ΡΠ°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠ².
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠ°ΠΉΠ»Π° OpenAPI ΠΈΠ· Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΊΠΎΠ΄Π°
ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI Π²ΡΡΡΠ½ΡΡ, ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΈΠ· Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ», Π΅ΡΠ»ΠΈ Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ API-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ Π½Π΅ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
Swagger ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Swagger Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI. ΠΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΡΠΈΡΠ°ΡΡΡΡ ΡΠ°ΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Swagger Codegen. ΠΠ΅ΡΠΎΠ΄Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΡ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΠΏΠΎ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Swagger Π΄Π»Ρ Scalatra. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Codegen ΡΠΌ. Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° API Π΄Π»Ρ Swagger ΠΏΠΎ API Evangelist. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΌ. Π ΡΠ°Π·Π΄Π΅Π»Π°Ρ Β«ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ SwaggerΒ» ΠΈ Β«ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌΒ».
Π₯ΠΎΡΡ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈ Β«Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠ΅ΡΒ» Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π½ΡΠΆΠ½ΠΎ Π΅ΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ (ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Javadoc). ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ (ΠΎΠΏΠΈΡΡΠ²Π°Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠΊΡ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ Ρ. Π.).
ΠΡΠ»ΠΈ ΠΈΠ΄ΡΠΈ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΡΡΠΈ, Π½ΡΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ Π΄Π»Ρ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π±ΡΠ΄ΡΡ ΠΏΠΈΡΠ°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ (ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈ Ρ ΠΎΡΠΎΡΠΎ, Π½ΠΎ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠ»ΠΎΡ ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ).
ΠΠΎΠ΄Ρ ΠΎΠ΄: ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ
Spec-first development ΡΡΠΎ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ API Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ. ΠΡΠ»ΠΈ Π²Ρ ΡΠ»Π΅Π΄ΡΠ΅ΡΠ΅ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΠΈ Β«ΡΠ½Π°ΡΠ°Π»Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΒ», Π²Ρ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π΅Π΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠΈΡΡΡ ΠΊΠΎΠ΄.
ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΊΠ°ΠΊΠΎΠ²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΡΠ²Π΅ΡΡ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠΎΡ Β«ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΒ» ΠΈΠ»ΠΈ Β«ΠΏΠ»Π°Π½Β» Π±ΡΠ» ΠΏΡΠΈΠ½ΡΡ, Π‘ΡΠΎΡ Π³ΠΎΠ²ΠΎΡΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π² ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ (ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ), ΡΡΠΎΠ±Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ. ΠΠΎ Π½Π΅ ΡΡΠΎΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ Π±Π΅Π· ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
Π‘Π»ΠΈΡΠΊΠΎΠΌ ΡΠ°ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π±ΡΡΡΡΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΡΡ ΠΊ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠ΅ΠΊ API, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ ΠΎΡΠ²Π΅ΡΠΎΠ², Π±Π΅Π· ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π»ΠΈ API ΡΠΎΠΌΡ, ΡΡΠΎ Ρ ΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΡΠΌΠΈ API-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ (Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Ρ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΡ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ), Π΅ΡΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Β«Π±ΡΡΡΡΡΠΉ ΡΠ±ΠΎΠΉΒ», ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊ ΡΠ°ΡΡΠΎ ΠΎΡΠΌΠ΅ΡΠ°ΡΡ agile ΡΠ½ΡΡΠ·ΠΈΠ°ΡΡΡ. ΠΠ΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Ρ ΡΠΆΠ΅, ΡΠ΅ΠΌ Π²ΡΠΏΡΡΡΠΈΡΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ API, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅Π»Π°Π΅Ρ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ Π²ΡΠΏΡΡΠΊΠ°Ρ . ΠΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² API ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΊΠΎΡΠΌΠ°ΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Smartbear, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅Π»Π°Π΅Ρ SwaggerHub (ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π°Π΄ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠΌΠΈ API Swagger), Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄ ΡΠ°ΡΠ΅ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΡΡΠ½ΠΎΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π° Π½Π΅ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ. ΠΠΎΠ΄Ρ ΠΎΠ΄ βspec-first developmentβ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π΄ΠΈ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ»Π΅Π½ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π½Π΅ΠΆΠ΅Π»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ². ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π»ΡΡΡΠΈΠ΅ API.
ΠΠ°ΠΆΠ΅ Π΄ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ API ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΎΠΆΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ, Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ° Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ. ΠΠΎΠΊ-ΡΠ΅ΡΠ²Π΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΎΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΎΠ½ ΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°, Π½ΠΎ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΎΡΠ²Π΅Ρ Π² ΠΊΠΎΠ΄Π΅, ΠΈ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΡΠΌ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
Π ΠΎΠ»Ρ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΈΡΠ°ΡΠ΅Π»Ρ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π’ΠΎΠΌΠ° ΠΠΆΠΎΠ½ΡΠΎΠ½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π±ΡΠ»ΠΈ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ Swagger ΠΈΠ»ΠΈ OpenAPI, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Π» Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI Π²ΡΡΡΠ½ΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ ΡΠ°ΡΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π» Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ, ΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ Π±ΡΠ» Π½Π΅ ΡΠΎΠ΄Π½ΡΠΌ. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π±ΡΠ»Π° Π΄Π»Ρ Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌ Π΄Π΅Π»ΠΎΠΌ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ Π½Π°ΠΌ Π±ΡΠ΄ΡΡ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡΡΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡ, Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡΠ΅ Ρ Swagger ΠΈΠ»ΠΈ OpenAPI, Π½ΠΎ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ API (ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΡΡ Π΅ΠΌΠ°Ρ , ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΠΎΠΌΡ ΠΌΡΡΠ»Π΅Π½ΠΈΡ). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π°ΠΌ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²Π·ΡΡΡ Π½Π° ΡΠ΅Π±Ρ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Ρ, ΡΡΠΎΠ±Ρ Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ² ΠΊ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΈ Π΄ΡΡΠ³ΠΈΠΌ Π΄Π΅ΡΠ°Π»ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π»ΡΡΡΠΈΠΌ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΠΌ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
Π ΡΡΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΈΡΠ°ΡΠ΅Π»ΠΈ ΠΈΠ³ΡΠ°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠΎΠ»Ρ Π² ΡΠΎΡΡΡΠ΄Π½ΠΈΡΠ΅ΡΡΠ²Π΅ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ API. ΠΡΠ»ΠΈ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡ , ΡΡΠ° ΡΠΎΠ»Ρ (ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΠ΅Π»Ρ) ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ API Π΄ΠΎ Π΅Π³ΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²Π»ΠΈΡΡΡ Π½Π° ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠ΅ΠΊ, ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠΈΡ ΠΈ ΡΠ°Π±Π»ΠΎΠ½Ρ, ΠΏΡΠΎΡΡΠΎΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°ΠΊΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π»ΠΈΡΡΡ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ API (Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅, ΠΎΠ±ΡΡΠ½ΠΎ, Π½Π΅ Π²Π»ΠΈΡΡΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΈΡΠ°ΡΠ΅Π»ΠΈ).
ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI Ρ ΠΏΠΎΠΌΠΎΡΡΡ Swagger UI
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ API, ΠΌΠΎΠΆΠ½ΠΎ βΡΠΊΠΎΡΠΌΠΈΡΡβ ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π΅ ΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ Petstore.
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI, ΡΠ²Π»ΡΠ΅ΡΡΡ Swagger UI. (ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ Β«SwaggerΒ» ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌ API, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Β«OpenAPIΒ» ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΉ ΠΎΡ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π½Π΅ Π·Π°Π²ΠΈΡΡΡΠ΅ΠΉ ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°.) ΠΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Swagger Π΅Π³ΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ Swagger UI Π΅ΡΡΡ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅.
ΠΠΎΠ΄ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Swagger Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΊΡΠ°Π½, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π²ΠΈΠ΄Π½ΠΎ, ΠΊΠ°ΠΊ Swagger ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Open API
ΠΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Swagger UI Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ API ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΏΠΎΠ³ΠΎΠ΄Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΊΡΡΡΠ°.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΡ ΠΊΡΠΈΡΠΈΠΊΡΡΡ Π²ΡΠΏΠ°Π΄Π°ΡΡΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΈ Swagger UI ΠΊΠ°ΠΊ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΠΈΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΠΉ ΡΠΌΠ΅Π½ΡΡΠ°ΡΡ ΠΈΠ»ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ Π΄Π΅ΡΠ°Π»ΠΈ. ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡ Π²ΡΠ΅ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΠ°Π·Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π²Π΅ΡΡ API. Π’Π°ΠΊΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΡΠ΅Π»ΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠΌ Π½Π°ΡΠ°ΡΡ. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Swagger UI ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΡΠ°ΡΠΊΠΈΠΌ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΡΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠΌ ΠΏΠΎ API.
👨💻 ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π°Π½ΡΡΠΈΠ΅: ΠΡΡΠ»Π΅Π΄ΡΠ΅ΠΌ API PetStore Π² Swagger UI
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Swagger, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Petstore.
ΠΠΊΠ½ΠΎ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Π² Swagger UI
Π Π°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠΊΡ Pet
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Petstore Π·Π°ΠΏΡΠΎΡΠ°
Swagger UI ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ curl. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π±ΡΠ» ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ curl:
Π ΡΠ°Π·Π΄Π΅Π»Π΅ βΠΡΠ²Π΅ΡΡβ Swagger UI Π²ΡΠ΄Π°Π΅Ρ ΠΎΡΠ²Π΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΡΠ²Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ XML:
ΠΡΠ»ΠΈ Π²ΡΠ±ΡΠ°ΡΡ Π² Π²ΡΠΏΠ°Π΄Π°ΡΡΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠ΅ βResponse content typeβ JSON, ΡΠΎ Π² ΠΎΡΠ²Π΅ΡΠ΅ Π²Π΅ΡΠ½Π΅ΡΡΡ JSON Π²ΠΌΠ΅ΡΡΠΎ XML.
ΠΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
ΠΠΎΠΌΠΈΠΌΠΎ Swagger UI Π΅ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ OpenAPI. ΠΠΎΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²: Restlet Studio, Apiary, Apigee, Lucybot, Gelato, Readme.io, swagger2postman, ΠΎΡΠ·ΡΠ²ΡΠΈΠ²ΡΡ ΡΠ΅ΠΌΡ swagger-ui, Postman Run Buttons ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
ΠΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΡ Swagger UI
ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΡΠΈΡ ΠΏΡΠΎΡΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ, ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠ΅ΡΡΡΠ²Π° Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΡΡΠΎΠ±Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Swagger. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ Π½Π°Π²ΡΠΊΠΈ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ OpenAPI ΠΈ Swagger UI
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Swagger ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ Π°ΠΏΠ΅Π»Π»ΠΈΡΠΎΠ²Π°ΡΡ ΠΊ ΠΆΠ΅Π»Π°Π½ΠΈΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Β«Π΄Π°ΠΉ ΠΌΠ½Π΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡΒ», Ρ Swagger ΠΈ OpenAPI Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ:
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅ΡΠ΅Π½ΠΈΡ
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI, ΠΎΠ½ Π²ΡΠ΅ ΠΆΠ΅ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π΅Π΅ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ API. OpenAPI Π±ΡΡΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π΄Π»Ρ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΈ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² (ΠΎΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π·Π°ΠΏΡΡΠΊΠ° Postman Π΄Π»Ρ ΠΏΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ API), Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π½Π°ΡΠ΅ΠΌ API ΠΈ Π΄Π»Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π΅Π΅ Π² Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ API Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠ².
Swagger UI ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Ρ ΠΎΡΠΎΡΡΡ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΡ ΡΠΎΡΠΌΡ Π΄Π»Ρ API. ΠΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π²ΡΠ΅ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΈ ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΡΠ°ΡΠΊΠΈΠΉ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ). ΠΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΡΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠΎΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΠΏΠΎΠ½ΡΡΡ ΠΎΡΠ½ΠΎΠ²Ρ Π²Π°ΡΠ΅Π³ΠΎ API.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ²ΠΎΠ΅Π³ΠΎ API Ρ Π΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ API. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ°Π½Π΅Ρ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ΅ΡΡΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΈΠΏΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²: ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Β«ΠΏΡΡΠΈΒ», ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Β«Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Β», ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Β«Π·Π°ΠΏΡΠΎΡΠ°Β» ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Β«ΡΠ΅Π»Π° Π·Π°ΠΏΡΠΎΡΠ°Β». Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² REST: Β«BooleanΒ», Β«numberΒ», Β«integerΒ» ΠΈΠ»ΠΈ Β«stringΒ». Π ΠΎΡΠ²Π΅ΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Β«objectsΒ», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ Β«stringsΒ» ΠΈΠ»ΠΈ Β«arraysΒ».
ΠΠΎΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π°ΡΡ Π΅ΡΠ΅ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ API, ΠΊΠΎΡΠΎΡΠ°Ρ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ API Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ.
OpenAPI ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ API, Π½ΠΎ Π΅ΡΠ»ΠΈ API ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, Π±Π΅Π· Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²Π·Π°ΠΈΠΌΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌΠΈ ΡΠΎΡΠΊΠ°ΠΌΠΈ, ΠΈ Π΅ΡΠ»ΠΈ Π½Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ API Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, OpenAPI ΠΈ Swagger UI ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΌΠΎΡΠ½ΡΠΌ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠΎΠΆΠ½ΠΎ Π΄Π°Π²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ ΠΈ ΠΎΡΠ²Π΅ΡΡ.
Π‘ ΡΠ°ΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ OpenAPI ΠΈ Swagger UI ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠ³ΡΡ ΡΠΈΡΠ°ΡΡ Π½Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ Π½Π°ΡΠΈΠΌ API. ΠΡΠ° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΌΠΎΡΠ½ΡΠΉ ΠΎΠΏΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
Π Π΅ΡΡΡΡΡ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΡΡΠ΅Π½ΠΈΡ
ΠΠΎΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± OpenAPI ΠΈ Swagger: