Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ API с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ OpenAPI 3 ΠΈ Swagger

Π’Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ часто содСрТит API для взаимодСйствия с Π½ΠΈΠΌ. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ API ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ быстрСС ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ваши сСрвисы. Если API Π·Π°ΠΊΡ€Ρ‹Ρ‚ ΠΎΡ‚ внСшнСго ΠΌΠΈΡ€Π°, Ρ‚ΠΎ всС Ρ€Π°Π²Π½ΠΎ стоит ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ врСмя спСцификации

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Swagger?

Swagger автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ вашСго API Π² Π²ΠΈΠ΄Π΅ json. А ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Springdoc создаст ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ UI для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’Ρ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ смоТСтС ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, Π½ΠΎ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ запросы, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹.

Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСпосрСдствСнно ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ сСрвСр ΠΏΠΎ спСцификации API Swagger, для этого Π½ΡƒΠΆΠ΅Π½ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° Swagger-Codegen.

Swagger ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, всС ΠΊΠ°ΠΊ ΠΌΡ‹ любим. Π Π°Π·ΠΌΠ΅Ρ‡Π°Π΅Ρ‚Π΅ аннотациями ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, DTO.

Π’Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ всС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ прСдставлСнныС Ρ‚ΡƒΡ‚ Π² ΠΌΠΎΠ΅ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ REST API

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ API, для Π½Π°Ρ‡Π°Π»Π° напишСм Π΅Π³ΠΎ 😄 Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ ΠΈ ΠΎΠ΄Π½ΠΎ DTO. Π‘ΡƒΡ‚ΡŒ нашСй систСмы – ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π»ΠΎΡΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Для Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² достаточно слоя ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², поэтому я позволю сСбС Π²ΠΎΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сСрвСрный ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€Π½Ρ‹ΠΉ слой ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ бизнСс Π»ΠΎΠ³ΠΈΠΊΡƒ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€. Π’ своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Ρ‚Π°ΠΊ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ.

Π’ качСствС DTO Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ класс UserDto – это ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ нашСй систСмы. Π£ Π½Π΅Π³ΠΎ ΠΏΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ΠΉ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… 3 ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹:

UserController ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

PointContoller ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° взаимодСйствиС с Π±Π°Π»Π»Π°ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Один ΠΌΠ΅Ρ‚ΠΎΠ΄ этого ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π±Π°Π»ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ.

ΠœΠ΅Ρ‚ΠΎΠ΄ destroy Π² SecretContoller ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

НастраиваСм Swagger

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Swagger Π² наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Для этого Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ зависимости Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Swagger автоматичСски Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ список всСх ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° любой ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄ΡƒΡ‚ пСрСчислСны допустимыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ HTTP (DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT).

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° доступныС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅: статус ΠΎΡ‚Π²Π΅Ρ‚Π°, Ρ‚ΠΈΠΏ содСрТимого ΠΈ список ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ послС добавлСния зависимостСй, Ρƒ нас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ докумСнтация. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² этом, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ адрСсу: localhost:8080/swagger-ui.html

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger apiSwagger Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ с Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΌΠΈ настройками

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ добавлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Пока Ρƒ нас Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ информативная докумСнтация. Π”Π°Π²Π°ΠΉΡ‚Π΅ исправим это.

Π­Ρ‚ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ большС для Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ красоты UI Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ²

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² API, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ понятно, ΠΊΡ‚ΠΎ Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π·Π° это Π±Π΅Π·ΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ 😄

Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ²

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Π‘ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€

Аннотация скрываСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Swagger. Он всС Ρ‚Π°ΠΊΠΆΠ΅ доступСн для Π²Ρ‹Π·ΠΎΠ²Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ вашСго API.

Наша докумСнтация стала Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ понятнСС, Π½ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ описания для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.

Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

Аннотация @Operation описываСт возмоТности ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. Достаточно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ значСния:

Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Parameter Ρ‚Π°ΠΊΠΆΠ΅ опишСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π»Π»Π°ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° required ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля для запроса. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ всС поля Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅.

Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° DTO

Π‘Π²Π°Π³Π³Π΅Ρ€ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚: enum, Π΄Π°Ρ‚Ρ‹. Но Ссли Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ поля DTO ΠΈΠΌΠ΅ΡŽΡ‚ спСцифичный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Π’Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ это Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊ:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Но ΠΏΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅, Π·Π°Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΄Π°Ρ‚Ρƒ рСгистрации. Π”Π° ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Π°Ρ‰Π΅ всСго Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ сСрвСром. Π‘ΠΊΡ€ΠΎΠ΅ΠΌ эти поля ΠΈΠ· swagger с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Schema.AccessMode.READ_ONLY :

Валидация

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° измСнСния спСцификации.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

И всС это Π½Π°ΠΌ Π½Π΅ стоило Π½ΠΈ малСйшСго Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ усилия.

Π­Ρ‚ΠΈΡ… Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Π²Π°ΠΌ Ρ…Π²Π°Ρ‚ΠΈΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ описаниС API вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Если Π½ΡƒΠΆΠ½Ρ‹ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ настройки, Ρ‚ΠΎ Π²Ρ‹ Π±Π΅Π· Ρ‚Ρ€ΡƒΠ΄Π° смоТСтС Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΊ аннотациям сваггСра.

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

Swagger – умная докумСнтация вашСго RESTful web-API β€” ΠΎΠ±Π·ΠΎΡ€ Junior back-end developer-Π° для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ²

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

ΠŸΡ€Π΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅

Команда, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я сдСлала свои ΠΏΠ΅Ρ€Π²Ρ‹Π΅ шаги Π½Π° ΠΏΠΎΠΏΡ€ΠΈΡ‰Π΅ написания ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, занималась Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ API ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Π½Π° C# (для удобства Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ, скаТСм, Π±ΡƒΠΊΠ²ΠΎΠΉ E), ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠ΅Π³ΠΎ ΡƒΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚ ΠΈ Π·Π°Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π²ΡˆΠ΅Π³ΠΎ сСбя Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ с вСсьма ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стороны. И здСсь Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ Ρƒ юного ΠΏΠ°Π΄Π°Π²Π°Π½Π° ΠΏΠΎΠΊΠ° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ вопросов, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΆΠ΅ прСдставим сСбС, Ρ‡Ρ‚ΠΎ Ρ€Π°Π½Π΅Π΅ Π²Ρ‹, скорСй всСго, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, писали собствСнныС web-API, Π½ΠΎ вряд Π»ΠΈ для ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΆΠΈΠ»ΠΈ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ Β«Π‘Π°ΠΌ создал – сам ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒΒ», ΠΈ Ссли Π²Π΄Ρ€ΡƒΠ³ ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Π±Ρ‹ заинтСрСсовала Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ вашСго API, Ρ‚ΠΎ Π²Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, ΠΊΠΈΠ½ΡƒΠ»ΠΈ Π±Ρ‹ Π΅ΠΌΡƒ pdf-Ρ„Π°ΠΉΠ» с ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ инструкциСй (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ я Π±Ρ‹ сдСлала ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ). Β«Π“Π΄Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π°ΠΏΠΈΒ» β€” спросила я Ρ‚ΠΈΠΌΠ»ΠΈΠ΄Π° оТидая ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° тСкстовый Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. «Загляни Π² SwaggerΒ» β€” ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» ΠΎΠ½.

ΠŸΠΎΡΡ‚ΠΎΠΉ, ΠΊΠ°ΠΊ Ρ‚Π°ΠΊ получаСтся, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ, Π° API Π²Ρ‹ ΠΊ Π½Π΅ΠΌΡƒ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сСйчас?


ВсС Π²Π΅Ρ€Π½ΠΎ, ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ API Ρƒ E Π΄ΠΎ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π΅ сущСствовало. ЀактичСски вся Ρ€Π°Π±ΠΎΡ‚Π° происходила Ρ‡Π΅Ρ€Π΅Π· web-интСрфСйс, Π° back-end состоял ΠΈΠ· мноТСства Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… микросСрвисов, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ·Π²Π½Π΅ Π±Π΅Π· Ρ‡Π΅Ρ‚ΠΊΠΎΠ³ΠΎ понимания Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ, ΡƒΠΆ Π½Π΅ говоря ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сами ΠΎΠ½ΠΈ Π½Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ долю состояли ΠΈΠ· лСгаси. НуТно Π±Ρ‹Π»ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят нСпосрСдствСнно Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с сСрвСром, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠΌ красивоС ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ API. Π§Ρ‚ΠΎ для этого потрСбуСтся? ВсС, ΠΎ Ρ‡Π΅ΠΌ Π±Ρ‹Π»ΠΎ написано Ρ‡ΡƒΡ‚ΡŒ Ρ€Π°Π½ΡŒΡˆΠ΅ – самим Π²Π·ΡΡ‚ΡŒ ΠΈ Π½Π°Π»Π°Π΄ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ со всСми Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ микросСрвисами, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ ΠΈ ΠΊΡ€Π°ΡΠΈΠ²ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, сдСлав это красиво, понятно, ΠΈ самоС Π³Π»Π°Π²Π½ΠΎΠ΅ – коммСрчСски ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

Π₯ΠΎΡ€ΠΎΡˆΠΎ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ Swagger ΠΈ Π² Ρ‡Π΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡ‚ΡŒ ΠΌΠΈΡ€Ρƒ?

По сути Swagger – это Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для спСцификации RESTful API. Π•Π³ΠΎ ΠΏΡ€Π΅Π»Π΅ΡΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ, Π½ΠΎ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ запросы – Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Swagger UI, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ это выглядит:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ – ΠΏΠΎΠ»Π½ΠΎΠ΅ описаниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΠ΄Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ², ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запроса – Π² ΠΎΠ±Ρ‰Π΅ΠΌ, наглядно.

И ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ руководство для внСдрСния Swagger Π² ASP.NET Core
с нуля Π΅ΡΡ‚ΡŒ Π²ΠΎΡ‚ Π² этой этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.

ИдСя Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ отобраТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² API, Π²ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Swagger Codegen

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Если ΠΎΡ‡Π΅Π½ΡŒ хочСтся, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСпосрСдствСнно ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ сСрвСр ΠΏΠΎ спСцификации 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:

ΠŸΡ€ΠΎΡ‡Π°Ρ информация, Π² частности инструкция ΠΏΠΎ использованию, прСдставлСна здСсь:
ΠžΠ±Ρ‰Π°Ρ информация

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

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ API Π² Java ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Swagger ΠΈ OpenAPI 3.0

Π’Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ часто содСрТит API для взаимодСйствия с Π½ΠΈΠΌ. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ API ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ быстрСС ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ваши сСрвисы. Если API Π·Π°ΠΊΡ€Ρ‹Ρ‚ ΠΎΡ‚ внСшнСго ΠΌΠΈΡ€Π°, Ρ‚ΠΎ всС Ρ€Π°Π²Π½ΠΎ стоит ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ врСмя спСцификации β€” это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ вашим Π½ΠΎΠ²Ρ‹ΠΌ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ быстрСС Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с систСмой.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ β€” ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ процСсс. Swagger ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ эту Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Swagger?

Swagger автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ API Π² Π²ΠΈΠ΄Π΅ json. А ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Springdoc создаст ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ UI для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’Ρ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ смоТСтС ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, Π½ΠΎ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ запросы, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹.

Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСпосрСдствСнно ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ сСрвСр ΠΏΠΎ спСцификации API Swagger, для этого Π½ΡƒΠΆΠ΅Π½ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° Swagger-Codegen.

Swagger ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, всС ΠΊΠ°ΠΊ ΠΌΡ‹ любим. Π Π°Π·ΠΌΠ΅Ρ‡Π°Π΅Ρ‚Π΅ аннотациями ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, DTO.

Π’Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ всС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ прСдставлСнныС Ρ‚ΡƒΡ‚ Π² ΠΌΠΎΠ΅ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ REST API

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ API, для Π½Π°Ρ‡Π°Π»Π° напишСм Π΅Π³ΠΎ πŸ™‚ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ ΠΈ ΠΎΠ΄Π½ΠΎ DTO. Π‘ΡƒΡ‚ΡŒ нашСй систСмы β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π»ΠΎΡΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Для Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² достаточно слоя ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², поэтому я позволю сСбС Π²ΠΎΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сСрвСрный ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€Π½Ρ‹ΠΉ слой ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ бизнСс Π»ΠΎΠ³ΠΈΠΊΡƒ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€. Π’ своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Ρ‚Π°ΠΊ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ.

Π’ качСствС DTO Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ класс UserDto β€” это ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ нашСй систСмы. Π£ Π½Π΅Π³ΠΎ ΠΏΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ΠΉ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… 3 ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹: имя, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, ΠΏΠΎΠ» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, количСство Π±Π°Π»Π»ΠΎΠ², Π΄Π°Ρ‚Π° рСгистрации

UserController ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

PointContoller ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° взаимодСйствиС с Π±Π°Π»Π»Π°ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Один ΠΌΠ΅Ρ‚ΠΎΠ΄ этого ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π±Π°Π»ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ.

ΠœΠ΅Ρ‚ΠΎΠ΄ destroy Π² SecretContoller ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

НастраиваСм Swagger

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Swagger Π² наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Для этого Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ зависимости Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Swagger автоматичСски Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ список всСх ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° любой ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄ΡƒΡ‚ пСрСчислСны допустимыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ HTTP (DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT).

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° доступныС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅: статус ΠΎΡ‚Π²Π΅Ρ‚Π°, Ρ‚ΠΈΠΏ содСрТимого ΠΈ список ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ послС добавлСния зависимостСй, Ρƒ нас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ докумСнтация. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² этом, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ адрСсу: localhost:8080/swagger-ui.html

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ добавлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Пока Ρƒ нас Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ информативная докумСнтация. Π”Π°Π²Π°ΠΉΡ‚Π΅ исправим это.

Для Π½Π°Ρ‡Π°Π»Π° создадим класс ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сваггСра SwaggerConfig β€” имя ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅.

Π­Ρ‚ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ большС для Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ красоты UI Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ²

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² API, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ понятно, ΠΊΡ‚ΠΎ Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π·Π° это Π±Π΅Π·ΠΎΠ±Ρ€Π°Π·ΠΈΠ΅

Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ²

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Π‘ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€

Аннотация скрываСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Swagger. Он всС Ρ‚Π°ΠΊΠΆΠ΅ доступСн для Π²Ρ‹Π·ΠΎΠ²Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ вашСго API.

Наша докумСнтация стала Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ понятнСС, Π½ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ описания для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.

Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

Аннотация @Operation описываСт возмоТности ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. Достаточно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ значСния:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Parameter Ρ‚Π°ΠΊΠΆΠ΅ опишСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π»Π»Π°ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° required ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля для запроса. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ всС поля Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅.

Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° DTO

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΡ‚Π°Ρ€Π°ΡŽΡ‚ΡΡ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² классС понятными ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π½ΠΎ Π½Π΅ всСгда это ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π°Ρ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎ-понятноС описаниС самой DTO ΠΈ Π΅Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ @Schema

Π‘Π²Π°Π³Π³Π΅Ρ€ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚: enum, Π΄Π°Ρ‚Ρ‹. Но Ссли Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ поля DTO ΠΈΠΌΠ΅ΡŽΡ‚ спСцифичный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Π’Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ это Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊ:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Но ΠΏΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅, Π·Π°Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΄Π°Ρ‚Ρƒ рСгистрации. Π”Π° ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‡Π°Ρ‰Π΅ всСго Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ сСрвСром. Π‘ΠΊΡ€ΠΎΠ΅ΠΌ эти поля ΠΈΠ· swagger с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Schema.AccessMode.READ_ONLY :

Валидация

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

И всС это Π½Π°ΠΌ Π½Π΅ стоило Π½ΠΈ малСйшСго Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ усилия.

Π­Ρ‚ΠΈΡ… Π·Π½Π°Π½ΠΈΠΉ Π²Π°ΠΌ Ρ…Π²Π°Ρ‚ΠΈΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ описаниС API вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Если Π½ΡƒΠΆΠ½Ρ‹ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ настройки, Ρ‚ΠΎ Π²Ρ‹ Π±Π΅Π· Ρ‚Ρ€ΡƒΠ΄Π° смоТСтС Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΊ аннотациям сваггСра.

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

Swagger (OpenAPI 3.0)

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚. Π­Ρ‚ΠΎ ΠΌΠΎΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ пост Π½Π° Π₯Π°Π±Ρ€Π΅ ΠΈ я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π²Π°ΠΌΠΈ своим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ Π² исслСдовании Π½ΠΎΠ²ΠΎΠ³ΠΎ для сСбя Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°.

МнС прСдоставился ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚Π΅ΠΌΡƒ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для своСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π’Π΄ΠΎΡ…Π½ΠΎΠ²ΠΈΠ²ΡˆΠΈΡΡŒ спикСром Π•Π²Π³Π΅Π½ΠΈΠΉ ΠœΠ°Ρ€Π΅Π½ΠΊΠΎΠ²Ρ‹ΠΌ, я Ρ€Π΅ΡˆΠΈΠ» Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ. Π’ процСссС ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ, я ΠΎΠ±Π»Π°Π·ΠΈΠ» ΠΌΠ½ΠΎΠ³ΠΎ статСй ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎ ΠΈ эффСктивно донСсти Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

БСйчас Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Сю Π² Π½Π°Π΄Π΅ΠΆΠ΄Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΎΠ½Π° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Swagger (OpenApi 3.0)

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π― Π½Π° 99% ΡƒΠ²Π΅Ρ€Π΅Π½ Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΈΠ· вас Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с поиском Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π²Π°ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. МногиС Ссли ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈ Π΅Π΅ быстро, Π½ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ описано Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π»ΠΈΠ±ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π΅Π³ΠΎ ΡƒΠΆΠ΅ Π½Π΅Ρ‚.
БСгодня я Π²Π°ΠΌ Π΄ΠΎΠΊΠ°ΠΆΡƒ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ способы ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΈ Π² этом ΠΌΠ½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠΎΠ³Π°Ρ‚ΡŒ Open Source framework ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ SmartBear ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Swagger, Π° с 2016 Π³ΠΎΠ΄Π° ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ стал Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ OpenAPI Specification.

Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСпосрСдствСнно ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ сСрвСр ΠΏΠΎ спСцификации API Swagger, для этого понадобится Swagger Codegen.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹

Swagger ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ написанию Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ:

ДокумСнтация ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π½Π° основании вашСго ΠΊΠΎΠ΄Π°.

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позиционируСтся ΠΊΠ°ΠΊ «ΠΎΡ‡Π΅Π½ΡŒ просто». Нам достаточно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ нСсколько зависимостСй Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΈ ΡƒΠΆΠ΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, Ρ…ΠΎΡ‚ΡŒ ΠΈ Π½Π΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ описанной какою ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ.

Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΡ‚ обилия Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ ΠΈ описания Π² Π½ΠΈΡ….

Вся докумСнтация Π±ΡƒΠ΄Π΅Ρ‚ вписана Π² нашСм ΠΊΠΎΠ΄Π΅ (всС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² Π½Π΅ΠΊΠΈΠΉ Java Swagger Code)

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π΅ ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Π΅ΡΡ‚ΡŒ возмоТности, Π½ΠΎ Π΅Π³ΠΎ ΠΎΡ‡Π΅Π½ΡŒ просто ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

ДокумСнтация ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ ΠΊΠΎΠ΄Π°.

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ синтаксис Swagger Specification.

ДокумСнтация ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π»ΠΈΠ±ΠΎ Π² YAML/JSON Ρ„Π°ΠΉΠ»Π΅, Π»ΠΈΠ±ΠΎ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Swagger Editor.

Swagger Tools

Swagger ΠΈΠ»ΠΈ OpenAPI framework состоит ΠΈΠ· 4 основных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

Swagger Core

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Swagger Core Π²ΠΎ всС ΠΎΡ€ΡƒΠ΄ΠΈΠ΅, трСбуСтся:

Apache Maven 3.0.3 или большС

Jackson 2.4.5 или большС

Π§Ρ‚ΠΎ Π±Ρ‹ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, достаточно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π²Π΅ зависимости:

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ maven ΠΏΠ»Π°Π³ΠΈΠ½, Ρ‡Ρ‚ΠΎ Π±Ρ‹ наша докумСнтация ΠΏΡ€ΠΈ сборкС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΡΡŒ Π² YAML

Π”Π°Π»ΡŒΡˆΠ΅ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Swagger Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π²Π° Π±ΠΈΠ½Π°. Π“Π΄Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ прилоТСния, Π²Π΅Ρ€ΡΠΈΡŽ нашСго API, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π΄Π°Π½Π½Ρ‹Π΅ API

ПослС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½Ρ‹Ρ… Π½Π°ΠΌ зависимостСй, Ρƒ нас появятся Π½ΠΎΠ²Ρ‹Π΅ аннотация с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ наш ΠΊΠΎΠ΄.

Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:

Swagger Codegen

Π’ настоящСС врСмя ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ языки / Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ:

Java (Jersey1.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx, Google API Client Library for Java, Rest-assured)

Scala (akka, http4s, swagger-async-httpclient)

Node.js (ES5, ES6, AngularJS with Google Closure Compiler annotations)

Haskell (http-client, Servant)

C# (.net 2.0, 3.5 or later)

C++ (cpprest, Qt5, Tizen)

Java (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, RestEasy, Play Framework, PKMST)

C# (ASP.NET Core, NancyFx)

C++ (Pistache, Restbed)

Ruby (Sinatra, Rails5)

API documentation generators:

Π§Ρ‚ΠΎ Π±Ρ‹ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, достаточно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Swagger:

ΠΈ Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ OpenApi 3.0, Ρ‚ΠΎ:

МоТно Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ maven ΠΏΠ»Π°Π³ΠΈΠ½, ΠΈ ΡƒΠΆΠ΅ Π½Π° процСссС сборки ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ для нас ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π»ΠΈΠ±ΠΎ ΠΌΠΎΠΊ сСрвиса.

Π’Π°ΠΊΠΆΠ΅ всС это ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

Запустив Π΄ΠΆΠ°Ρ€Π½ΠΈΠΊ codegen ΠΈ Π·Π°Π΄Π°Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ help ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдоставляСт Π½Π°ΠΌ Swagger Codegen:

Для нас самыС Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ это validate, которая быстро ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ спСцификации ΠΈ generate, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Client Π½Π° языкС Java

Swagger UI

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Swagger UI ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для ΠΌΠΎΠ΅Π³ΠΎ pet-project:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

НаТавши Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «Try it out», ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ запрос Π·Π° сСрвСр ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ Π½Π΅Π³ΠΎ:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Swagger Editor

На Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Π² спСцификации OpenAPI 3.0 сущСствуСт восСмь ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’Π½ΡƒΡ‚Ρ€ΠΈ этих Π²Π΅Ρ€Ρ…Π½Π΅ΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½ΠΎ Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹:

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ со спСцификациСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Swagger Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Swagger ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ прСдставлСниС: слСва пишСм ΠΊΠΎΠ΄ спСцификации, Π° справа Π²ΠΈΠ΄ΠΈΠΌ ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ дисплСй Swagger UI. МоТно Π΄Π°ΠΆΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ запросы ΠΈΠ· интСрфСйса Swagger Π² этом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅.

Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Swagger ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚ ошибки Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ, Π²ΠΎ врСмя кодирования Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° спСцификации. НС стоит Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, Ссли ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ X-ΠΌΠ΅Ρ‚ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ ΠΈ Π²Π°ΠΆΠ½Ρ‹ΠΌ свойством для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ это openapi. Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ указываСтся вСрсия спСцификации OpenAPI. Для Swagger спСцификации это свойство Π±ΡƒΠ΄Π΅Ρ‚ swagger:

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ info содСрТит ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ вашСм API,Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, описаниС, Π²Π΅Ρ€ΡΠΈΡŽ, ссылку Π½Π° Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ, ссылку Π½Π° обслуТивания ΠΈ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. МногиС ΠΈΠ· этих свойство ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ components ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ срСди Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² спСцификации OpenAPI. Π’ components хранятся ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ опрСдСлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСстах Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ спСцификации. Π’ нашСм сцСнарии Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ API ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² parameters ΠΈ responses Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ components

Conclusions

ДокумСнтация стала Π±ΠΎΠ»Π΅Π΅ понятнСй для бизнСс ΡŽΠ·Π΅Ρ€Π° Ρ‚Π°ΠΊ ΠΈ для тСхничСским ΡŽΠ·Π΅Ρ€Π°ΠΌ (Swagger UI, Open Specifiation)

МоТно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ насколько совмСстимы измСнСния. МоТно Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ это Π² дТСнкинсС

НСт Π½ΠΈ ΠΊΠ°ΠΊΠΎΠΉ лишнСй Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊ ΠΊΠΎΠ΄Π΅, ΠΊΠΎΠ΄ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, докумСнтация ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ

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

Знакомство со спСцификациями 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 api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

Если Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΈ написании ΠΊΠΎΠ΄Π° Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Swagger, ΠΌΠΎΠΆΠ½ΠΎ быстро ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΆΠ΄Π°Ρ‚ΡŒ запуска сборки ΠΈ ΡƒΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ ошибки.

YAML зависим ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΈ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠΉ, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… синтаксис ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’Π°ΠΊΠΎΠ΅ пространствСнно-Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ понятным для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. Однако, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ слоТности с расстановкой ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ².

АвтоматичСская гСнСрация Ρ„Π°ΠΉΠ»Π° OpenAPI ΠΈΠ· Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ ΠΊΠΎΠ΄Π°

ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² спСцификации OpenAPI Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ автоматичСски ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΈΠΌΠ΅Π΅Ρ‚ смысл, Ссли Π΅ΡΡ‚ΡŒ большоС количСство API-интСрфСйсов ΠΈΠ»ΠΈ Ссли для тСхничСских писатСлСй нСцСлСсообразно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ эту Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.

Swagger ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ мноТСство Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² свой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ для создания Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² спСцификации. Π­Ρ‚ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Swagger Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² спСцификации OpenAPI. Π­Ρ‚ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Swagger Codegen. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π² зависимости ΠΎΡ‚ языка программирования. НапримСр, Π²ΠΎΡ‚ справочник ΠΏΠΎ Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Swagger для Scalatra. Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Codegen см. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ инструмСнтов автоматичСского гСнСрирования ΠΊΠΎΠ΄Π° API для Swagger ΠΏΠΎ API Evangelist. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ инструмСнты ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ см. Π’ Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… Β«Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ инструмСнты SwaggerΒ» ΠΈ Β«Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌΒ».

Π₯отя этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈ Β«Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚Β» Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ спСцификации, Π½ΡƒΠΆΠ½ΠΎ Π΅Ρ‰Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ (этот процСсс Π½Π΅ слишком отличаСтся ΠΎΡ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Javadoc). Π—Π°Ρ‚Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ (описывая ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Ρ‚. Π”.).

Если ΠΈΠ΄Ρ‚ΠΈ ΠΏΠΎ этому ΠΏΡƒΡ‚ΠΈ, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ доступ ΠΊ исходному ΠΊΠΎΠ΄Ρƒ для внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ (Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠ»ΠΎΡ…ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ).

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎ спСцификации

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger apiSpec-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 api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger apiНа ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π²ΠΈΠ΄Π½ΠΎ, ΠΊΠ°ΠΊ Swagger ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Open API

МоТно ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Swagger UI с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ API сСрвиса ΠΏΠΎΠ³ΠΎΠ΄Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° курса.

НСкоторыС Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Ρ‹ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΡƒΡŽΡ‚ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ списки Swagger UI ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΡΡ‚Ρ€Π°Π½ΠΈΡ‡Π½ΡƒΡŽ модСль ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈ способной ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ. ОбъСдиняя всС ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ страницС Π² ΠΎΠ΄Π½ΠΎΠΌ прСдставлСнии, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ сразу ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ вСсь API. Π’Π°ΠΊΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ прСдставлСниС Π² Ρ†Π΅Π»ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ позволяСт ΠΈΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ… ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Swagger UI являСтся ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ справочным руководством ΠΏΠΎ API.

👨‍💻 ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ занятиС: Π˜ΡΡΠ»Π΅Π΄ΡƒΠ΅ΠΌ API PetStore Π² Swagger UI

Π”Π°Π²Π°ΠΉΡ‚Π΅ познакомимся с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом Swagger, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Petstore.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger apiОкно Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Swagger UI

    Π Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Pet

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger apiΠ’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Petstore запроса

    Swagger UI отправляСт запрос ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ curl. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±Ρ‹Π» ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ curl:

    Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ β€œΠžΡ‚Π²Π΅Ρ‚Ρ‹β€ Swagger UI Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ сСрвСра. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΡ‚Π²Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ XML:

    Если Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π² Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΌ спискС β€œResponse content type” JSON, Ρ‚ΠΎ Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ вСрнСтся JSON вмСсто XML.

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ swagger api

    Π”Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

    Помимо 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:

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

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

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