[Mastering Spring 5.0] 6.4 Swagger
Mastering Spring 5.0 μ€ν°λ
REST μλΉμ€ λ¬Έμμ μλν
- REST API μ¬ννκ² μ€κ³λλ©΄ μ’κ² μ§λ§, μλΉμμ μꡬμ¬ν λλ μλΉμ€κ° 컀μ§μ λ°λΌ API κ° μ μ 볡μ‘ν΄μ§κ³ κ΄λ¦¬ν΄μΌν API κ°μλ μ μ λκ² λλ€.
- νμ μ μν΄μλ API λ λ°λμ λ¬Έμν λμ΄μΌ νλλ°, μμ€ λ³κ²½μ¬νκ³Ό λκΈ°ν μν€κΈ°κ° λ§€λ² λ²κ±°λ‘λ€.
- μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ REST API μλΉμ€ λ¬Έμ(μ€ν)μ μλν νλ ν΄μ΄ λ±μ₯νκ² λμλ€.
μ£Όμ API Spec μλν λΌμ΄λΈλ¬λ¦¬
- SLATE : https://github.com/lord/slate
- Swagger : https://swagger.io/
- API Blueprint : https://apiblueprint.org/
Swagger2
Swagger 2 λ RESTful API λ₯Ό μ€λͺ
νκ³ λ¬Έμννλλ° μ¬μ©λλ μ€νμμ€ λΌμ΄λΈλ¬λ¦¬μ΄λ€. νΉμ μΈμ΄μ ꡬμ λ°μ§ μμΌλ©°, HTTP μ΄μΈμ μλ‘μ΄ κΈ°μ¬κ³Ό νλ‘ν μ½ νμ₯μ΄ κ°λ₯νλ€. HTML, Javasript CSS λ₯Ό ν΅νμ¬ API λ¬Έμλ₯Ό λμ μΌλ‘ μμ±ν μ μλ Swagger UI λΌμ΄λΈλ¬λ¦¬κ° ν¨κ» μ 곡λλ€.
Swagger2 Spec μ λͺ κ°μ§ ꡬνμ²΄κ° μλλ°, Springboot νλ‘μ νΈμ κ²½μ° Springfox
ꡬνμ²΄κ° μ£Όλ‘ μ¬μ©λλ€.
μ€νλ§λΆνΈ νλ‘μ νΈμ swagger μ μ©νκΈ°
μμ‘΄μ± μΆκ°
Springfox
Spec μ Swagger μ Swagger UI λ₯Ό pom.xml
λλ build.gradle
μ μΆκ°νλ€.
pom.xml
|
|
build.gradle
|
|
Swagger νλ‘μ νΈ μ€μ
/src/main/com/mastering/sping/springboot/config/SwaggerConfig.java
|
|
- @Configuration : μ€νλ§ κ΅¬μ±νμΌμ μ μνλ€.
- @EnableSwagger2 : μ€μ¨κ±° μ§μμ κ°λ₯νκ² νλ μ΄λ Έν μ΄μ .
- Docket : μ€μ¨μ μ€νλ§ MVC νλ μμν¬λ₯Ό μ¬μ©ν΄ μ€μ¨κ±° λ¬Έμ μμ±μ μ€μ νλ κ°λ¨ν Builder Class
new Docket(DocumentationType.SWAGGER_2)
: μ€μ¨κ±° 2λ₯Ό μ¬μ©ν μ€μ¨κ±° λ²μ μΌλ‘ μ€μ νλ€..apis(RequestHandlerSelectors.any()).paths(PathSelectors.any())
: λ¬Έμμ λͺ¨λ API μ κ²½λ‘λ₯Ό ν¬ν¨νλ€.
Swagger API λͺ μΈ νμΈνκΈ°
Swagger μ€μ μ΄ μλ£λλ©΄ μλ²λ₯Ό κΈ°λ ν http://localhost:8080/v2/api-docs
λ‘ μ€μ¨κ±° API λ¬Έμλ₯Ό μμν μ μλ€.
Swagger UI λ¬Έμ νμΈνκΈ°
- Swagger UI λ μμ‘΄μ± λΌμ΄λΈλ¬λ¦¬
io.springfox:springfox-swagger-ui
λ₯Ό ν΅ν΄ νμ±ν λλ€. ` http://localhost:8080/swagger-ui.html
λ‘ λ¬Έμλ₯Ό νμΈ ν μ μλ€.