
API λ¬Έμ μλν λΌμ΄λΈλ¬λ¦¬μΈ Swagger μ λν΄μ μμλ³΄κ² μ΅λλ€.
μ€μ¨κ±°(Swagger)λ κ°λ°μκ° REST μΉ μλΉμ€λ₯Ό μ€κ³, λΉλ, λ¬Έμν, μλΉνλ μΌμ λμμ£Όλ λν λꡬ μνκ³μ μ§μμ λ°λ μ€ν μμ€ μννΈμ¨μ΄ νλ μμν¬μ΄λ€. λλΆλΆμ μ¬μ©μλ€μ μ€μ¨κ±° UI λꡬλ₯Ό ν΅ν΄ μ€μ¨κ±°λ₯Ό μλ³νλ©° μ€μ¨κ±° ν΄μ μλ μλνλ λ¬Έμν, μ½λ μμ±, ν μ€νΈ μΌμ΄μ€ μμ± μ§μμ΄ ν¬ν¨λλ€.
wikipedia μ λμ μλ μ€λͺ μ λλ€. λ§ κ·Έλλ‘ API μ λν Operation λ¬Έμλ₯Ό μΉμΌλ‘ μ κ³΅ν΄ μ£Όλ νλ μμν¬ μ λλ€.
APIκ° κ°λ°λλ©΄ ν΄λΌμ΄μΈνΈκ° νμ©ν μ μλλ‘ μΈν°νμ΄μ€ μ μμλ₯Ό λ§λ€μ΄μΌ ν©λλ€. Operation μ μ’
λ₯μ μμ©ν μ μλ λ§€κ°λ³μμ νμ
, μλ΅ λ°μ΄ν°μ ꡬ쑰μ νμ
λ±μ μμΈνκ² μ 곡ν΄μΌ ν΄λΌμ΄μΈνΈκ° ν¨μ¨μ μΌλ‘ νμ©ν μ μμ΅λλ€. κ·Έλμ μ΄λ° λ΄μ©λ€μ΄ ν¬ν¨λ λ¬Έμλ₯Ό λ§λ€κ³ λ°°ν¬ν΄μΌ νμ΅λλ€. νμ§λ§ λ¬Έμ λ°°ν¬ λ°©μμ μ§μμ μΈ κ΄λ¦¬κ° μ΄λ ΅κ³ , μ΄λ‘μΈν΄ λ¬Έμμ μ€μ API κ° λΆμΌμΉ λ¬Έμ κ° μμ£Ό λ°μνμμ΅λλ€.
μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νλ©΄μλ μ νν μ 보λ₯Ό μ 곡ν μ μκ² κ³ μλ λΌμ΄λΈλ¬λ¦¬κ° Swagger μ
λλ€.
Operation λ§ μΆκ°νλ©΄ μλμΌλ‘ Swaggerμ μ μ©λ©λλ€.
Operation κ°κ° μ€λͺ μ μΆκ°ν μ μκ³ , μλ΅, μμ² κ°μ²΄κ° μλ μ€μ λκ³ , 컀μ€ν ν μ μμ΅λλ€.
μλμΌλ‘ λ¬Έμν λκΈ° λλ¬Έμ μ½λ μμ λ§μΌλ‘λ μΌκ΄μ± μλ λͺ μΈκ° κ°λ₯ν©λλ€.
springdoc openapi starter maven μ κ²μνμ¬ μμ‘΄μ±μ μΆκ°ν©λλ€.
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0'
springfox μ swagger λ 2020λ
μ΄ν μ
λ°μ΄νΈκ° μκΈ° λλ¬Έμ νμ¬μλ νλ°ν μ
λ°μ΄νΈκ° μ΄λ£¨μ΄μ§λ springdoc μ μμ‘΄μ±μ μΆκ°ν©λλ€.
λ¨μν μμ‘΄μ± μΆκ°λ§μΌλ‘λ swagger page μ μ μμ΄ κ°λ₯ν©λλ€.
http://localhost:13713/my-api/swagger-ui/index.html URI λ₯Ό λΈλΌμ°μ μ μ
λ ₯ν΄λ΄
λλ€.

Swagger site κ° μ°κ²°λκ³ , μ΄μ μ μμ±νμλ Operation λͺ©λ‘μ΄ νμΆλλ κ²μ νμΈν μ μμ΅λλ€.
application.yml μ Swagger κ΄λ ¨ν μ£Όμ μ€μ μ μΆκ°νκ² μ΅λλ€.
springdoc:
api-docs:
path: /api-docs
default-consumes-media-type: application/json
default-produces-media-type: application/json
swagger-ui:
path: /swagger-ui.html
operations-sorter: alpha
tags-sorter: alpha
display-request-duration: true
doc-expansion: none
display-operation-id: true
filter: true
API μ λν μ 보λ₯Ό Json type μΌλ‘ μ λ¬νλ api-docs μ μ£Όμλ₯Ό μ€μ ν©λλ€. API μ λν λͺ¨λ μ 보λ₯Ό ν¬ν¨νκΈ° λλ¬Έμ λ€μν κΈ°λ₯ ꡬνμ νμ©ν μ μμ΅λλ€.
κΈ°λ³Έ μλ΅ Operation μ μμ², μλ΅ νμ μ μ€μ ν©λλ€. μ무 μ€μ μ΄ μμ κ²½μ° default media type μ μ°Έκ³ ν©λλ€.
swagger μ μ μ£Όμλ₯Ό μ€μ ν©λλ€. μ€μ ν URI μ λ ₯ μ index page λ‘ redirect λ©λλ€.
operationμ μ λ ¬ μμλ₯Ό μ€μ ν©λλ€. alpha : μνλ²³ μμΌλ‘ μ λ ¬ μ method : HTTP method μμΌλ‘ μ λ ¬ λ₯Ό μ 곡ν©λλ€.


tag λͺ
μ μ λ ¬ ν©λλ€. default λ Swagger-UI μ μν΄ κ²°μ λ μμ(μ½νμ§μμ μΈκ² κ°λ€μ) μ΄κ³ alpha μ΅μ
μΌλ‘ μνλ²³μμΌλ‘ μ λ ¬ν©λλ€.
μλ΅μ κ±Έλ¦° μμλ‘ default λ false μ΄λ©° true μ€μ μ API μμ²μ κ±Έλ¦° μκ°μ΄ νμΆλ©λλ€.

tag λ₯Ό Operationμ΄ μ΄λ¦°μνλ‘ μ‘°νν κ²μΈκ°μ λν μ΅μ
μ΄κ³ , default λ list λ‘ tagλ§ μ΄λ¦° μνλ‘ νμΆλ©λλ€. μ΄μΈ, full : operation κΉμ§ μ΄λ¦°μνλ‘ νμΆ, none : μ 체 λ«ν μνλ‘ νμΆ μ΄ μμ΅λλ€.
λ€μμ μ€μ ν΄λ³Ό operation-id μ νμΆμ¬λΆ μ€μ μ΅μ
μ
λλ€. κΈ°λ³Έμ μΌλ‘ ν΄λΉ Method λͺ
μ΄ νμΆλμ§λ§ true μ€μ νκ³ @Operationμ operationId μμ±μ μΆκ°νλ©΄ operation-idκ° νμΆλ©λλ€.

tagλ₯Ό κ²μν μ μμ μμμ μΆκ°νλ μ΅μ
μ
λλ€. default λ false μ΄κ³ ture μ
λ ₯ μ filtering μ ν μ μλ μμμ΄ Swagger page μλ¨μ μΆκ°λ©λλ€.

Swagger μ μ μμ¬λΆλ₯Ό μ€μ ν©λλ€. false μ΅μ
μ€μ μ μ μμ΄ λΆκ°ν©λλ€. profile μ€μ μΌλ‘ prod μ€μ μμλ μ μν μ μκ² μ€μ ν©λλ€. default λ true
---
spring:
config:
activate:
on-profile: prod
springdoc:
swagger-ui:
enabled: false
application.yml νμΌμ ν΅ν λ€λ₯Έ μ΅μ μ€μ μ Link λ₯Ό νμΈνμΈμ!
μμΈν μ€κ³λ λ€μ μμ± κΈ μ°Έκ³ ~