1편을 적은 뒤 꽤 많은 시간이 흘렀다.
나는 2월 초 중소기업의 백엔드 개발자로 취업하게 됐다. 🥰
누구나 다 아는 유명한 N사, K사, C사 같은 회사는 아니지만 만족하면서 출근하고 있다.ㅎㅎ
취업 상당히 바쁠 것이라 생각했지만 생각보다 여유롭다. 내가 맡은 할 일을 끝내고 나면 공부 하고싶은 것들을 할 수 있어서 좋다. 아직까진 그렇다
이후 나는 취업의 기쁜 마음으로 맥북 프로를 질렀다. 할부금은 내년의 내가 마지막으로 내겠지 뭐...
그때 당시 maven package의 오류가 있어 진행을 하지 않았었다. 이후 계속해서 확인 해 보니 jdk가 서로 충돌하여 진행이 되지 않았었다. 이후 버전을 맞춰 clean-package를 진행하였고 정상적으로 작동하였다.
이후 빌드 한 jdk에 맞춰 EC2도 버전을 같게 하여 빌드 하였다.
취업 이후 한동안 건드리지도 못하고 회사 프로젝트에 잠시 집중했었다. 하지만 여유도 생기고 Spring이라는 매력에 더 빠져들어버렸다.
이제는 EC2에 올렸고 계속해서 기능을 추가할때마다 테스트를 해야한다.
system.out.println()으로 찍어서 테스트를 하는 방법은 이제 더 이상 되지 않고 해서는 안된다.
여러 방법이 있지만 처음에 사용했던것은 PostMan을 이용하여 테스트를 하는 것이였다.
계속해서 API는 커질테고 분명 API Docs가 필요할테니 가장 익숙하고 GUI가 마음에 들어 사용하였다.
좋은 툴을 선택한 것은 맞지만 뭔가 불편하고 계속해서 내가 추가를 수동으로 해줘야한다는 귀찮음이 가장 크게 느껴졌다.
그래서 나름 고민끝에 swagger를 선택하였다.
직접 써본 결과 장점이 확실한 것 같다.
장점
- 편함
- 깔끔함
단점
- 어노테이션 추가를 계속 해줘야하기 때문에 코드가 조금씩 길어짐
먼저 의존성 추가부터!
<!--Spring swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0</version>
</dependency>
3.0.0 버전에서 이 부분을 추가 시켜줘야 오류가 나지 않았다.
혹시 모르니 꼭 application.yml에 추가하자(application.xml, application.properties 등 ...)
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
그 후 Config 폴더를 새로 생성하고 SwaggerConfiguration을 작성한다.
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
public Docket swaggerApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.nyanyumserver.nyanyumserver"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("NYU API")
.description("USER")
.version("1.0.0")
.build();
}
}
다 작성을 완료했다면 이제 Controller에 적용하자
일단 적용할 Controller
에 EnableSwagger2
어노테이션을 추가
위 코드처럼 @ApiOperation
을 추가하고 value
값도 넣어준다.
@ApiOperation
의 value
값이 적용되면 이런 모습으로 나온다.
@ApiParam
은 파라미터 값의 이름을 지정해준다.
속성값으로 required
를 넣어 줌으로 반드시 값을 넣어야 동작하도록 한다.
@ApiIgnore
는 나타내지 않을 파라미터를 숨기는 기능을 가지고 있다. 나는 세션을 굳이 보여줄 필요 없으므로 적용했다.
다 적용했다면 이제 확인해보자
swagger 3.0.0 부터 아래 링크와 같은 형태로 접속해야 된다.
http://localhost:{port}/swagger-ui/index.html#/
{port}
는 프로젝트의 포트번호를 넣으면 된다.
링크로 접속을 하면 다음과 같이 나온다
swagger를 적용한 뒤 프론트에서 테스트를 할때 너무 편하다는 이야기를 많이 들었다. 나 또한 테스트를 하기 너무 편하기도 했고 여러모로 잘 적용한 기능 중 하나여서 기분이 좋았다.