spring swagger-ui
swagger-ui는 테스트? 혹은 문서? 가 있는 UI를 제공 해준다.
한번 살펴 보자
maven에 다음과 같이 추가 하자
...
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
...
swagger 설정을 해주자
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket restApi() {
// @formatter:off
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.build()
.useDefaultResponseMessages(false)
.globalResponseMessage(RequestMethod.GET,
Arrays.asList(
new ResponseMessageBuilder()
.code(500)
.message("server error")
.responseModel(
new ModelRef("Error")
).build()
)
);
// @formatter:on
}
private ApiInfo apiInfo() {
// @formatter:off
return new ApiInfoBuilder()
.title("Spring boot Swagger")
.description("api list")
.contact(new Contact("wonwoo", "wonwoo.ml", "test@test.com"))
.version("1.0.0")
.build();
// @formatter:on
}
}
별거 없다. 상태 코드 500은 전부 적용을 한다는 뜻이다.
그리고 제목, 내용, 연락처, 버전 등 입력 할 수 있다.
그런다음에 controller class에 다음과 같이 어노테이션을 추가 하자
...
@Api(description = "사용자 API")
public class AccountController {
....
}
...
속성으론 value, tags, hidden 등 여러가지가 있다.
그리고 해당 메소드에 다음과 같이 추가하자.
...
@ApiOperation(value = "사용자 리스트", notes = "사용자 리스트를 가져옵니다.")
@RequestMapping(value = "/accounts", method = RequestMethod.GET, headers = "Accept=application/json")
public List<Account> getAccounts() throws JsonProcessingException {
List<Account> accounts = accountRepository.findAll();
return accounts;
}
...
해당 API 의 제목 및 내용이다.
그리고 해당 프로퍼티 명을 지정해 줄 수 있다.
...
@ApiModelProperty(value = "사용자 아이디")
private Long id;
...
또한 감출수도 있다.
...
@ApiModelProperty(hidden = true)
private List<Ordered> ordered;
...
완료 되었다.
한번 UI 에들어 가서 확인해보자
http://localhost:8080/swagger-ui.html