Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами

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. Пошаговой инструкциСй ΠΏΠΎ настройкС ΠΎΠ½Π° Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ являСтся.

ВступлСниС

НСсколько мСсяцСв Π½Π°Π·Π°Π΄ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΡˆΠΈΡ… Π±Π΅ΠΊΠ΅Π½Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΠ½Ρ‚Π΅Ρ€Π½ΠΎΠ² ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π·Π°Π΄Π°Ρ‡Ρƒ β€” Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ простой сСрвис. БСрвис Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅ΠΌΠ°ΠΉΠ» ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ активности. Π’ Π·Π°Π΄Π°Ρ‡Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного ΠΈ Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π° всС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ. Однако Ρ‡Π΅Ρ€Π΅Π· нСсколько нСдСль ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΎΡ‚Ρ‡Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ…. Π― Ρ€Π΅ΡˆΠΈΠ» ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ этот сСрвис ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. β€œΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· нашСго ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ сСрвиса ΠΈ Π²ΡΡ‚Π°Π²ΡŒ ΠΈΡ… Π² Смайл”, β€” Π΄ΡƒΠΌΠ°Π» Ρ‚ΠΎΠ³Π΄Π° я.

На это Ρƒ мСня ΡƒΡˆΠ»ΠΎ нСсколько часов, ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄Π²ΠΎΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ REST endpoints ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΌΠ΅Π½ структуры. β€œΠΠΈΠΊΠΎΠ³Π΄Π° большС. Π”ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒβ€¦β€, β€” ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΎΡΡŒ Ρƒ мСня Π² Π³ΠΎΠ»ΠΎΠ²Π΅ всС это врСмя.

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сСрвисов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ, Π° для ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ выглядит ΠΊΠ°ΠΊ Сдиная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Один ΠΈΠ· самых популярных ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² для ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями ΠΌΠ΅ΠΆΠ΄Ρƒ микросСрвисами β€” это REST. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ REST Π½Π΅ являСтся само ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ URL, HTTP ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΎΡ‚Π²Π΅Ρ‚Π°. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ‚Π΅Π»Π° запроса. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ рСализация REST интСрфСйса базируСтся Π½Π° ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… ΠΈ традициях, принятых Π² вашСй ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ любом случаС, REST endpoints всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ описаны Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, доступном для всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². О Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈ Π³Π΄Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ, ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅, Π° ΠΏΠΎΠΊΠ° Π΄Π°Π²Π°ΠΉΡ‚Π΅ обсудим основы β€” Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Swagger

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΠΏΠΈΡΠ°Ρ‚ΡŒ, ΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅. РСшСниС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ простым, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°ΠΆΠ΅ самыС Π»Π΅Π½ΠΈΠ²Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠΌ пользовались. ПослС нСбольшого исслСдования ΠΌΡ‹ Π² Ataccama Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Swagger для докумСнтирования Π½Π°ΡˆΠΈΡ… REST APIs.

Swagger β€” это Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΈ спСцификация для опрСдСлСния REST APIs Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, друТСствСнном ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ (Π² нашСм случаС JSON ΠΈΠ»ΠΈ YAML). Но Swagger β€” это Π½Π΅ просто спСцификация. Основная Π΅Π³ΠΎ ΠΌΠΎΡ‰ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… инструмСнтах. Для Swagger сущСствуСт ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство бСсплатных ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ (ΠΊΠ°ΠΊ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ написанных сообщСством), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Тизнь (Π²Π°ΡˆΡƒ ΠΈ Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ»Π»Π΅Π³) Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ счастливой. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ всС это Π½Π° свои собствСнныС сСрвСра ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ Swagger ΠΎΠ½Π»Π°ΠΉΠ½-Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ.

Как ΠΌΡ‹ это Π΄Π΅Π»Π°Π΅ΠΌ?

Если Π²Ρ‹ Ρ‚ΠΎΠΆΠ΅ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Swagger β€” это Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ, Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ дальшС. БСйчас Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ подробностСй ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π² Ataccama, Π² таинствСнном ΠΌΠΈΡ€Π΅ микросСрвисов.

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ микросСрвиса Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ Π»Π΅ΠΆΠΈΡ‚ Ρ„Π°ΠΉΠ» со Swagger описаниСм ΠΈ хранится это всС прямо Π² git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Описания ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ сгСнСрированы ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Swagger generator, Ρ‚Π°ΠΊ ΠΈ записаны Ρ‚ΡƒΠ΄Π° Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. ΠŸΡ€Π΅Π»Π΅ΡΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ для записи ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ JSON ΠΈ YAML Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹. Π˜Ρ… Π»Π΅Π³ΠΊΠΎ Ρ€Π°ΡΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ, ΠΈ Π²ΠΎ врСмя сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ автоматичСски ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ соотвСтствиС REST endpoints ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. НСсоотвСтствия Π±ΡƒΠ΄ΡƒΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ прСдупрСТдСния, ΠΈ Ρ‚Π΅ΠΌ самым ΡΡ‚ΠΈΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии.

Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ микросСрвиса позволяСт Π½Π°ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π΅Ρ‘ Π² любоС врСмя прямо ΠΈΠ· этого микросСрвиса Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ REST endpoints Π² процСссС развСртывания сСрвиса Π½Π° собствСнной машинС. А Π΅Ρ‰Ρ‘ Ρƒ Swagger Π΅ΡΡ‚ΡŒ инструмСнт с Π²Π΅Π± интСрфСйсом для тСстирования REST endpoints.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ микросСрвис прСдоставляСт ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ для ДТСнкинса (ΠΈΠ»ΠΈ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ CI сСрвСра), которая сгСнСрируСт ΠΏΠΎΠ»Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для всСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π­Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° собираСт Swagger Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· всСх микросСрвисов, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ (дСдупликация, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²) ΠΈ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Swagger Ρ„Π°ΠΉΠ», содСрТащий ΠΏΠΎΠ»Π½ΡƒΡŽ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для всСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ β€” это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ β€” ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π΅ доступной для всСх Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², тСстСров ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… заинтСрСсованных людСй Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. И Swagger UI β€” это ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ для этого понадобится. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ нСбольшой JavaScript Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Swagger UI Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ HTML элСмСнты для всСх Π²Π°ΡˆΠΈΡ… REST endpoints, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π»Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ HTML Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Swagger UI ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ собствСнный Swagger Ρ„Π°ΠΉΠ» с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ API Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Но конфигурация Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ всСго нСсколько сСкунд.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ сгСнСрированная докумСнтация Π² Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅. ВрСмя ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‘ Π½Π° сСрвСр.
НСкотороС врСмя Π½Π°Π·Π°Π΄ ΠΌΡ‹ Π² Ataccama Π½Π°Ρ‡Π°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Docker, ΠΈ поэтому ΠΏΠΎΠ΄ΡƒΠΌΠ°Π»ΠΈ, Π° ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ Π½Π΅ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ всю Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΎΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² наш частный Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚Π°Ρ€ΠΈΠΉ, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ Π² Π΄ΠΎΠΊΠ΅Ρ€ кластСр? Π”ΠΆΠ΅Π½ΠΊΠΈΠ½c ΠΌΠΎΠΆΠ΅Ρ‚ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π·Π° нСсколько сСкунд. Как Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΡ‹ всСгда ΠΈΠΌΠ΅Π΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ ΠΊ просмотру Ρ‡Π΅Ρ€Π΅Π· Π±Ρ€Π°ΡƒΠ·Π΅Ρ€.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, использованиС Π΄ΠΎΠΊΠ΅Ρ€Π° Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ Π΅Ρ‰Π΅ нСсколько прСимущСств:

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ просто Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Ρ‘ Π½Π° собствСнном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ всСго ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.

И это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΠΎ.

Π­Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ общая идСя Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΡ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для REST endpoints ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅ΠΌ Π΅Π΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄ΠΎΠΊΠ΅Ρ€Π° для Π½Π°ΡˆΠΈΡ… микросСрвисов. К соТалСнию, синхронный REST это Π½Π΅ всС, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½Π°Π΄ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² этом Π»Π°Π±ΠΈΡ€ΠΈΠ½Ρ‚Π΅ микросСрвисов. Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ хочСтся ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ систСмы общСния, Π½Π° асинхронный ΠΎΠ±ΠΌΠ΅Π½ сообщСниями, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, подписки Π½Π° события ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅.

НСсмотря Π½Π° расхваливаниС SwaggerΠ° ΠΌΡ‹ всС Π΅Ρ‰Π΅ Π½Π΅ нашли ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° докумСнтирования асинхронных сообщСний. По Ρ„Π°ΠΊΡ‚Ρƒ, Π² АтаккамС ΠΌΡ‹ Π½Π΅Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹ нашим Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ всС Π΅Ρ‰Π΅ пытаСмся Π½Π°ΠΉΡ‚ΠΈ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π±ΠΎΠ»Π΅Π΅ простоС ΠΈ красивоС для описания ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ сообщСний ΠΈ ΠΈΡ… структур. Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅, ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях. Π›ΡŽΠ±Ρ‹Π΅ интСрСсныС ΠΈΠ΄Π΅ΠΈ ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ.

Автор Lubos Palisek
Backend software developer in Ataccama. Greedy for new cloud based technologies and ideas.

Ataccama Corporation – мСТдународная компания, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π°ΡΡΡ Π² области Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ качСством Π΄Π°Π½Π½Ρ‹Ρ…, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ мастСр-Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ прСдприятия (data governance), Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΆΠ΅ воспользовались Π±ΠΎΠ»Π΅Π΅ 250 ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, начиная ΠΎΡ‚ прСдприятий срСднСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ заканчивая ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹ΠΌΠΈ компаниями ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… отраслСй.

ВсС ваши вопросы ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ с ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Ρƒ Π°Π²Ρ‚ΠΎΡ€Ρƒ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° REST-сСрвСров Π½Π° Go. Π§Π°ΡΡ‚ΡŒ 4: ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ OpenAPI ΠΈ Swagger

ΠŸΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ REST-сСрвСров Π½Π° Go. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ OpenAPI ΠΈ Swagger для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ стандартизированного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ описанию REST API, ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Go-ΠΊΠΎΠ΄ Π½Π° основС спСцификации OpenAPI.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами

Π—Π°Ρ‡Π΅ΠΌ это всё?

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части этой сСрии ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ², ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ описывали REST API, я Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ описаниС этого API создано ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. Π­Ρ‚ΠΎ описаниС прСдставляСт собой просто список ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (ΠΏΡƒΡ‚Π΅ΠΉ) с коммСнтариями:

Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ, Ссли Π±Ρ‹ сущСствовал стандартный способ описания API. Β«Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΌΒ» я Π½Π°Π·Ρ‹Π²Π°ΡŽ Ρ‚Π°ΠΊΠΎΠ΅ описаниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Ρ€ΠΎΠ»ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСрами ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, стандартноС описаниС API выглядСло Π±Ρ‹ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ понятным для Ρ‚Π΅Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с особСнностями ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’Π°ΠΊΠΎΠ΅ описаниС, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ понятным Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ людям, Π½ΠΎ ΠΈ машинам, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ Π±Ρ‹ ΠΊ возмоТности Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, связанных с API.

Swagger ΠΈ OpenAPI

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Swagger появился Π² 2011 Π³ΠΎΠ΄Ρƒ ΠΊΠ°ΠΊ IDL (Interface Description Language, язык описания интСрфСйсов) для описания REST API.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами

Π’ 2014 Π³ΠΎΠ΄Ρƒ Π²Ρ‹ΡˆΠ»Π° вСрсия Swagger 2.0, Π° Π² 2016 мноТСство ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… IT-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ объСдинили усилия Π² Π΄Π΅Π»Π΅ создании спСцификация OpenAPI, Тёстко стандартизированного Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Swagger 3.0.

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сайт Swagger ΠΈ OpenAPI, https://swagger.io, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Компания SmartBear Software.

Π’ΠΎ всСх этих хитросплСтСниях Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ. Π›Π΅Π³Ρ‡Π΅ всСго Ρ€Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒ свСдСния ΠΎ Π½ΠΈΡ… Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΌΠΎΠΆΠ½ΠΎ, Ссли ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ OpenAPI β€” это соврСмСнноС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ спСцификации, Π° словом Β«SwaggerΒ» ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ инструмСнты, построСнныС Π½Π° основС этой спСцификации (ΠΏΡ€Π°Π²Π΄Π°, ΠΌΠΎΠΆΠ½ΠΎ Π΅Ρ‰Ρ‘ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ ΠΈ с Ρ‚Π°ΠΊΠΈΠΌ понятиСм, ΠΊΠ°ΠΊ «спСцификация SwaggerΒ», особСнно β€” Ссли Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ вСрсиях Swagger, Π²Ρ‹ΡˆΠ΅Π΄ΡˆΠΈΡ… Ρ€Π°Π½ΡŒΡˆΠ΅, Ρ‡Π΅ΠΌ вСрсия 3.0).

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ сСрвиса систСмы управлСния Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ OpenAPI

Начнём с повторСния нашСго любимого упраТнСния β€” с пСрСписывания сСрвиса прилоТСния для управлСния Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ. Π’ этот Ρ€Π°Π· ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ OpenAPI ΠΈ Swagger.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, я ΠΏΠΎΡ‡ΠΈΡ‚Π°Π» Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ OpenAPI 3.0 ΠΈ воспользовался Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ Swagger для Π²Π²ΠΎΠ΄Π° спСцификации Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ YAML. Π­Ρ‚ΠΎ заняло Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π² ΠΌΠΎΡ‘ΠΌ распоряТСнии оказался этот Ρ„Π°ΠΉΠ».

Π—Π΄Π΅ΡΡŒ components/schemas/Task прСдставляСт собой ссылку Π½Π° модСль Task :

Π­Ρ‚ΠΎ β€” описаниС схСмы Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ для ΠΏΠΎΠ»Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ (ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ β€” Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ автоматичСском Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° для Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ этих Π΄Π°Π½Π½Ρ‹Ρ….

Вся эта Ρ€Π°Π±ΠΎΡ‚Π° принСсла ΠΏΠ»ΠΎΠ΄Ρ‹ сразу ΠΆΠ΅ послС Π΅Ρ‘ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. А ΠΈΠΌΠ΅Π½Π½ΠΎ β€” ΠΎΠ½Π° Π΄Π°Π»Π° ΠΌΠ½Π΅ приятно Π²Ρ‹Π³Π»ΡΠ΄ΡΡ‰ΡƒΡŽ, Ρ†Π²Π΅Ρ‚Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для API.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сваггСр простыми словами

Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΠ· Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Swagger

Π­Ρ‚ΠΎ β€” всСго лишь ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚. Π’ настоящСй Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ‰Ρ‘Π»ΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ Π΅Ρ‘ элСмСнтам, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‡Ρ‘Ρ‚ΠΊΠΈΠ΅ описания ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запросов, ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ², JSON-схСм ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС, Ρ‡Ρ‚ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚Π΅ΡΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ API Π² Ρ€Π°ΠΌΠΊΠ°Ρ… прилоТСния, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для управлСния Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ. На ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌ этапС Ρ€Π°Π±ΠΎΡ‚Ρ‹ принято Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ этот API ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊ Π½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ с клиСнтских систСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² (это ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹, ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅). Если ваш API описан с использованиСм OpenAPI/Swagger, это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρƒ вас имССтся автоматичСски созданная докумСнтация ΠΈ интСрфСйс для ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠΌ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с API. Π­Ρ‚ΠΎ Π²Π΄Π²ΠΎΠΉΠ½Π΅ Π²Π°ΠΆΠ½ΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли срСди ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ вашСго API Π΅ΡΡ‚ΡŒ люди, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ программистами. НапримСр, это ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ UX-Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Ρ‹, тСхничСскиС писатСли, ΠΏΡ€ΠΎΠ΄Π°ΠΊΡ‚-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² API, Π½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ особСнно ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΊ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ написанию скриптов.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, OpenAPI стандартизируСт ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ авторизация, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‡Π΅Π½ΡŒ кстати. Наш ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ пользовались ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ описаниСм API, Π½ΠΈ Π² ΠΊΠ°ΠΊΠΎΠ΅ сравнСниС Π½Π΅ ΠΈΠ΄Ρ‘Ρ‚ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ Π½Π°ΠΌ OpenAPI.

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π° спСцификация API, ΠΌΠΎΠΆΠ½ΠΎ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ инструмСнты, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Π² экосистСмС Swagger. НапримСр β€” это Swagger UI ΠΈ Swagger Inspector. Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ API ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€ΠΎΠ»ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ инструмСнта ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ REST-сСрвСра Π² инфраструктуру ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°. НапримСр, Π² GCP имССтся систСма управлСния API Cloud Endpoints, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ OpenAPI. Она, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, позволяСт Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ Π°Π½Π°Π»ΠΈΠ· ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… API. ОписаниС API прСдоставляСтся этой систСмС с использованиСм OpenAPI.

АвтоматичСскоС Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° для Go-сСрвСра

ВозмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅Ρ‰Π°ΡŽΡ‚ Π½Π°ΠΌ OpenAPI/Swagger, выходят Π΄Π°Π»Π΅ΠΊΠΎ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ автоматичСского создания Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. На основС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… спСцификаций ΠΌΠΎΠΆΠ½ΠΎ автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ сСрвСров.

Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ я сдСлал Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°:

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ swagger-codegen ΡƒΠΌΠ΅Π΅Ρ‚ Π΅Ρ‰Ρ‘ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Π² Ρ‚ΠΎΠΌ числС ΠΈ Π½Π° Go. Иногда это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‡Π΅Π½ΡŒ кстати, Π½ΠΎ с ΠΌΠΎΠ΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ выглядит нСсколько Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ. Он, ΠΊΠ°ΠΊ ΠΈ Π² случаС с сСрвСрным ΠΊΠΎΠ΄ΠΎΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‹Π³Ρ€Π°Ρ‚ΡŒ Ρ€ΠΎΠ»ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² Π΄Π΅Π»Π΅ написания собствСнного ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π½ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π΅Π³ΠΎ автоматичСского создания вряд Π»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ CI/CD-процСсса.

Π˜ΡΠΏΡ‹Ρ‚Π°Π½ΠΈΠ΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ΄Π°

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ OpenAPI прСдставлСны Π² Π²ΠΈΠ΄Π΅ YAML (ΠΈΠ»ΠΈ JSON), ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½Π΅ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сущСствуСт Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΎΠ΄ΠΈΠ½ инструмСнт, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° основС этих спСцификаций сСрвСрный ΠΊΠΎΠ΄. Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ рассмотрСли Β«ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉΒ» Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° Swagger, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ инструмСнты.

Π’ случаС с Go популярным инструмСнтом Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° являСтся go-swagger. Π’ README этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π»:

Π§Π΅ΠΌ этот Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ отличаСтся ΠΎΡ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈΠ· swagger-codegen?

tl;dr Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅Π³ΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ swagger-codegen Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Go-ΠΊΠΎΠ΄ лишь для ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΈ Π΄Π°ΠΆΠ΅ Ρ‚ΡƒΡ‚ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ лишь плоскиС ΠΌΠΎΠ΄Π΅Π»ΠΈ. А ΠΊΠΎΠ΄ Go-сСрвСра, сгСнСрированный swagger-codegen β€” это, Π² основном, Π½Π΅Ρ‡Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ ΠΊΠΎΠ΄Π°-Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ.

Π― ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ сСрвСра с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ go-swagger. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄, сгСнСрированный этим срСдством, достаточно Π²Π΅Π»ΠΈΠΊ, я Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠΆΡƒ Ρ‚ΡƒΡ‚ ссылку Π½Π° Π½Π΅Π³ΠΎ. Π’ΡƒΡ‚ я лишь подСлюсь впСчатлСниями ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с go-swagger.

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΎΡ‚ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ go-swagger ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ лишь ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Swagger 2.0, Π° Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ OpenAPI 3.0. Π­Ρ‚ΠΎ довольно-Ρ‚Π°ΠΊΠΈ ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½ΠΎ, Π½ΠΎ я Π½Π°ΡˆΡ‘Π» ΠΎΠ΄ΠΈΠ½ ΠΎΠ½Π»Π°ΠΉΠ½ΠΎΠ²Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ описания API, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ с использованиСм спСцификации OpenAPI 3.0 Π² описания Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° OpenAPI 2.0 (Swagger). ОписаниС нашСго API Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Swagger 2.0 Ρ‚ΠΎΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π’ сСрвСрном ΠΊΠΎΠ΄Π΅, сгСнСрированном go-swagger, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ большС возмоТностСй, Ρ‡Π΅ΠΌ Π² ΠΊΠΎΠ΄Π΅, сгСнСрированном swagger-codegen. Но Π·Π° всё Π½Π°Π΄ΠΎ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ привязку ΠΊ особому Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡƒ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΌΡƒ создатСлями go-swagger. Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство зависимостСй ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈΠ· Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² go-openapi, Π² Π½Ρ‘ΠΌ ΠΊΠΎΠ΄ ΠΈΠ· этих ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обСспСчСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвСра. Π’Π°ΠΌ Π΅ΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ΄ для Ρ€Π°Π·Π±ΠΎΡ€Π° Ρ„Π»Π°Π³ΠΎΠ². БобствСнно, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ Π΅ΠΌΡƒ Ρ‚Π°ΠΌ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ?

Если Π²Π°ΠΌ нравится Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² ΠΊΠΎΠ΄Π΅, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ go-swagger, Ρ‚ΠΎ Π²Π°ΠΌ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠΉΡ‚ΠΈ этот ΠΊΠΎΠ΄. Но Ссли Ρƒ вас Π½Π° этот счёт Π΅ΡΡ‚ΡŒ свои ΠΈΠ΄Π΅ΠΈ β€” Π²Ρ€ΠΎΠ΄Π΅ использования Gin ΠΈΠ»ΠΈ собствСнного ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² go-swagger, ΠΎΡ‚Ρ€Π°Π·ΠΈΠ²ΡˆΠΈΠ΅ΡΡ Π½Π° Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΠΌΠΎΠ³ΡƒΡ‚ вас Π½Π΅ ΡƒΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ go-swagger ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΊΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΠΊΠ°ΠΊ ΠΈ ΠΊΠΎΠ΄ сСрвСра, отличаСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΠΎΠΌ ΠΈ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΡƒ зрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² go-swagger Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄. ΠŸΡ€Π°Π²Π΄Π°, Ссли Π½ΡƒΠΆΠ½ΠΎ всСго лишь быстро ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ для Ρ†Π΅Π»Π΅ΠΉ тСстирования, Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΌΠ½Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… людСй, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.

ПослС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ этого ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΌΠ½Π΅ посовСтовали ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ инструмСнт для гСнСрирования ΠΊΠΎΠ΄Π° β€” oapi-codegen. Код нашСго сСрвСра, созданный с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого инструмСнта, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь.

Π― Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ oapi-codegen ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΈΡΡŒ ΠΌΠ½Π΅ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС, Ρ‡Π΅ΠΌ ΠΊΠΎΠ΄, созданный Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ½ΠΎΠΉ инструмСнтами. Π­Ρ‚ΠΎ β€” простой ΠΈ чистый ΠΊΠΎΠ΄, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сгСнСрировано автоматичСски, ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ написано ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. БрСдство oapi-codegen Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ спСцификации OpenAPI 3! ЕдинствСнноС, ΠΊ Ρ‡Π΅ΠΌΡƒ я ΠΌΠΎΠ³Ρƒ ΠΏΡ€ΠΈΠ΄Ρ€Π°Ρ‚ΡŒΡΡ, это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π° стороннСго Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° лишь для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ привязку ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса. Π›ΡƒΡ‡ΡˆΠ΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹, Ссли Π±Ρ‹ это ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ. НапримСр β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ имСлся Π±Ρ‹ Π½Π΅ΠΊΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ использованиСм ΠΊΠΎΠ΄Π°, входящСго Π² состав сСрвСра, ΠΈ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ· стороннСго ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ спСцификаций Π½Π° основС ΠΊΠΎΠ΄Π°

Π§Ρ‚ΠΎ Ссли Ρƒ вас ΡƒΠΆΠ΅ имССтся рСализация REST-сСрвСра, Π½ΠΎ Π²Π°ΠΌ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ идСя Π΅Π³ΠΎ описания с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ OpenAPI? МоТно Π»ΠΈ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это описаниС Π½Π° основС ΠΊΠΎΠ΄Π° сСрвСра?

Π”Π° β€” ΠΌΠΎΠΆΠ½ΠΎ! Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ OpenAPI-описаниС сСрвСра (ΠΏΡ€Π°Π²Π΄Π°, это снова Π±ΡƒΠ΄Π΅Ρ‚ описаниС Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ спСцификации 2.0) ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²-Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ ΠΈ инструмСнтов Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ swaggo/swag. Π—Π°Ρ‚Π΅ΠΌ с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ описаниСм ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Swagger-инструмСнты ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π° Π΅Π³ΠΎ основС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.

На самом Π΄Π΅Π»Π΅, это выглядит ΠΊΠ°ΠΊ вСсьма ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ REST-сСрвСры ΠΏΠΎ-своСму ΠΈ Π½Π΅ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π½ΠΎΠ²ΠΎΠΉ схСмС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π΄ΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Swagger.

Π˜Ρ‚ΠΎΠ³ΠΈ?

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ вас имССтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с REST API, ΠΈ ΠΏΡ€ΠΈ этом Π²Π°ΠΌ приходится Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя сСрвисами.

Π― с ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ΠΌ ΠΎΠΏΠΈΡˆΡƒ ΠΌΠΎΠΉ API Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ OpenAPI ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ инструмСнтом для создания Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. А Π²ΠΎΡ‚ Π² Π΄Π΅Π»Π΅ автоматичСского гСнСрирования ΠΊΠΎΠ΄Π° я Π±ΡƒΠ΄Ρƒ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ остороТно. Π›ΠΈΡ‡Π½ΠΎ я ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ достаточно сильно ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΉ сСрвСрный ΠΊΠΎΠ΄. Π’ частности, Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² Π½Ρ‘ΠΌ зависимостях ΠΈ ΠΎ Π΅Π³ΠΎ структурС. Π― Π²ΠΈΠΆΡƒ смысл Π² автоматичСском создании сСрвСрного ΠΊΠΎΠ΄Π° для Ρ†Π΅Π»Π΅ΠΉ быстрого прототипирования ΠΈΠ»ΠΈ для ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ экспСримСнтов, Π½ΠΎ я Π½Π΅ использовал Π±Ρ‹ автоматичСски сгСнСрированный сСрвСрный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊ Π±Π°Π·Ρƒ для собствСнного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, я ΠΈΠ½Π°Ρ‡Π΅ Π±Ρ‹ смотрСл Π½Π° этот вопрос, Ссли Π±Ρ‹ ΠΌΠ½Π΅ Π½Π°Π΄ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ СТСнСдСльно Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ REST-сСрвСра. Π’ поисках баланса ΠΌΠ΅ΠΆΠ΄Ρƒ использованиСм Ρ‡ΡƒΠΆΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΠΊΠΎΠ΄Π° своСго, стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ прСимущСства ΠΎΡ‚ использования зависимостСй ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ усилиям, ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½Π½Ρ‹ΠΌ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

На самом Π΄Π΅Π»Π΅, инструмСнты Π²Ρ€ΠΎΠ΄Π΅ swaggo/swag ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ баланс ΠΌΠ΅ΠΆΠ΄Ρƒ зависимостями ΠΈ собствСнными усилиями. Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΈΡˆΡƒΡ‚ с использованиСм ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΈΠ»ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΈ ΠΎΡΠ½Π°Ρ‰Π°ΡŽΡ‚ Π΅Π³ΠΎ особыми коммСнтариями, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ REST API. ПослС этого ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ инструмСнт Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° основС этих ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ OpenAPI. Π­Ρ‚Ρƒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ ΠΈΠ»ΠΈ Ρ‡Π΅Π³ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π° Π΅Ρ‘ основС. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Ρƒ нас появляСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ полСзная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ β€” Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ СдинствСнного источника истины Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². Π­Ρ‚ΠΎΡ‚ источник располоТСн Π² максимальной близости ΠΊ исходному ΠΊΠΎΠ΄Ρƒ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, описываСмыС Π² коммСнтариях. А Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, кстати, всСгда ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² Π΄Π΅Π»Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

ΠŸΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ Π»ΠΈ Π²Ρ‹ спСцификациями OpenAPI ΠΏΡ€ΠΈ создании REST-сСрвСров?

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

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:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *