본문 바로가기

springboot로 API만들어보기10

[스프링부트로 API 만들기] 서버 배포 준비해보기 자! 이제 API를 구현하고, 문서화까지 마쳤으니 배포할 일만 남았다. jar 파일로 빌드 스프링 부트는 내정된 서버가 있어, 배포 과정이 복잡하지 않다. gradle을 사용해 빌드를 하면 자동으로 생성되도록 되어있다. 빌드가 완료되면 build/libs 하위에 projectname-version.jar 파일이 생성될 것이다. > build.gradle 의 일부 group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' > settings.gradle rootProject.name = 'demo' 프로젝트명과 버전정보는 위에 보이는 부분에서 수정이 가능하다. 이제 이 파일을 서버에 옮겨가서 환경에 맞는 jvm을 설치한 후 아래와.. 2021. 1. 5.
[스프링부트로 API 만들기] Spring Rest Docs를 사용해서 API Docs 자동으로 생성하기 이제 API를 만들고 검증까지 했다. 이제 테스 트롤 완료한 API들은 사용할 수 있는 상태이다. 하지만 아직 API를 사용할 사람들에게 어떻게 써야 하는지 알려줄 방법이 없다. API Documents. API Documents는 API 사용법을 알려주는 문서이다. 쉽게 말하면 매뉴얼이다. 공개된 API는 이런 문서들이 제공이 되어야 사용자들이 쓸 수 있기 때문에 필수로 작성해야 하는 문서이다. 자동화 도구 하지만, API 스펙을 문서로 관리하는것은 상당히 귀찮다. API에 변경이 생겼을 때마다 찾아서 고쳐야 하며, 모두 실제로 한 번씩 확인해보며 작성을 해야 하기 때문이다. 그렇기 때문에 이런 문서화를 자동화할 수 있는 도구들이 생겼다. 그중 주로 사용되는 도구들은 Swagger와 Spring Res.. 2021. 1. 5.
[스프링부트로 API 만들기] Junit 으로 API 테스트 코드 작성하기 지금까지 간단하게 API를 구현해보았다. 이제부터는 기능 구현만큼이나 중요한 테스트 코드를 작성해보자 테스트 코드 테스트 코드는 작성한 소프트웨어가 의도한 대로 작동하는지 확인해보는 코드이다. 기존에는 테스트 계획을 세워 수동으로 하였으나 최근에는 테스트 코드를 작성하여 검증을 하는 추세이다. 테스트 코드가 잘 짜여 있으면, 클라이언트 쪽에 서버의 동작이 완벽하다고 보장을 할 수 있음과 동시에 코드의 수정이 있었을 때 일어나는 좋지 않은 side-effect를 빠르게 확인할 수 있다. 또한 검증하는 과정에서 소프트웨어의 각 부분이 지켜야 하는 규칙을 정의하기 때문에 테스트 코드를 보고 빠르게 프로젝트를 파악할 수도 있다. 고로 테스트코드는 선택이 아니라 필수이다. 자세한 내용은 이후에 따로 포스팅하겠다... 2021. 1. 5.
[스프링부트로 API 만들기] ControllerAdvice를 사용하여 예외처리하기 지금까지 API를 구현을 했다. 이제 어느정도 기능은 전부 작동은 하는 상태이지만, 예외가 발생하면 500번 에러를 반환하는 상태이다. 500번 에러는 서버에 심각한 오류가 발생했음을 알리는 응답이기 때문에 예외별로 적절한 응답을 반환해야 한다. ControllerAdvice 예외처리를 각 컨트롤러에서 ExceptionHnadler를 구현해도 되지만 도메인별로 발생할 수 있는 예외들을 한곳에 모아서 관리를 하면 훨씬 편하다. 이럴 때 @ControllerAdvice를 사용하면 된다. @RestControllerAdvice public class PostExceptionHandler { @ExceptionHandler(Throwable.class) @ResponseStatus(HttpStatus.INTER.. 2021. 1. 3.
[스프링부트로 API 만들기] Api 구현해보기 지금까지 API기능을 만들기 위한 모든 부분들을 간단하게 만들어봤다. 이제 이들을 조합해서 간단한 블로그 API를 만들어보자 Service 매개변수로 받은 변수들을 활용해서 상황에 맞는 응답의 데이터를 조작한다. @Service @RequiredArgsConstructor public class PostService { private final PostRepository postRepository; @Transactional(readOnly = true) public List getPosts() { return this.postRepository.findAll().stream() .map(post -> new PostDto(post.getTitle(), post.getBody(), post.getView.. 2021. 1. 3.
[스프링부트로 API 만들기] 데이터를 관리해주는 모델 이제 제일 어렵고 중요한 모델에 대한 이야기를 해보자. 모델 모델은 백그라운드에서 동작하는 주요 로직을 처리하는 곳이다. 쉽게 말하면 데이터를 담당한다. 보통 데이터베이스와 직접적인 연관을 맺으며 동작한다. ORM Object Relational Mapping의 줄임말이다. RDB의 테이블을 객체로 자동으로 매핑하는걸 의미한다. ORM은 이 둘을 호환시키기 위하여 SQL을 자동으로 생성해서 처리를 해주는 역할을 한다. Java진영에서는 JPA(Java Persistence API)를 많이 사용하며, 스프링에서는 JPA를 더욱 쓰기 편하게 만들어놓은 모듈인 Spring Data JPA를 사용한다. 엔터티(Entity) 데이터베이스 테이블과 1:1로 매핑되는 클래스이다. 외부에서 무분별한 getter와 se.. 2021. 1. 3.