블로그 API(2): 블로그 글 작성 구현(컨트롤러)및 Test

도람·2025년 7월 24일
post-thumbnail

컨트롤러 메서드 코드 작성

  • /api/articles에 POST 요청이 오면 @PostMapping을 이용해 요청을 매핑하여
    블로그 글을 생성하는 BlogService의 save() 메서드를 호출한 뒤, 생성된 블로그 글을 반환하는 작업을 할 addArticle() 메서드 작성.

BlogApiController 코드

@RequiredArgsConstructor
@RestController //HTTP Response Body에 HTTP 응답으로 객체 데이터를 JSON 형식으로 반환
public class BlogApiController {

    private final BlogService blogService;

    //HTTP메서드가 POST일 때 전달받은 URL과 동일하면 메서드로 매핑
    @PostMapping("/api/articles")
    public ResponseEntity<Article> addArticles(@RequestBody AddArticleRequest request){
        Article saveArticle = blogService.save(request);

        //요청한 자원이 성공적으로 생성되었으며, 저장된 블로그 글 정보를 응답 객체에 담아 전송
        return ResponseEntity.status(HttpStatus.CREATED)
                .body(saveArticle);
    }
}
  • @RestController : HTTP 응답으로 객체 데이터를 JSON 형식으로 반환.

  • @PostMapping(): HTTP 메서드가 POST일 때 요청받은 URL와 동일한 메서드와 매핑.
    (위 코드의 경우에는 /api/articles는 addArticle()메서드에 매핑)

  • @RequestBody : HTTP를 요청할 때 응답에 해당하는 값을 @RequestBody 애너테이션이 붙은 AddArticleRequest에 매핑.

  • ResponseEntity.status().body(): 응답코드로 201(created)를 응답하고 테이블에 저장된 객체를 반환.


응답코드

  • 200 OK : 요청이 성공적으로 수행
  • 201 Created : 요청이 성공적으로 수행, 새로운 리소스 생성.
  • 400 Bad Request : 요청 값이 잘못되어, 요청에 실패
  • 403 Forbidden : 권한이 없어 요청에 실패
  • 404 Not Found : 요청 값으로 찾은 리소스가 없어 요청에 실패
  • 500 Internal Server Error : 서버 상에 문제가 있어 요청에 실패

API 실행 테스트

H2 콘솔 활성화 - application.yml

spring:
  jpa:
    show-sql: true               # 전송 쿼리 확인
    properties:
      hibernate:
        format_sql: true
    defer-datasource-initialization: true
  datasource:
    url: jdbc:h2:mem:testdb
  h2:
    console:
      enabled: true

테스트 - Postman

테스트 과정은 이러하다.

  • 스프링 부트를 실행하고, 포스트맨을 실행하여 HTTP 메서드를 POST
  • URL : http//localhost:8080:/api/articles
  • Body : raw -> JSON으로 변경
  • 요청 값
{
    "title" : "제목",
    "content": "내용"
}
  • send.

일단.
스프링 부트 서버를 실행하면,

다음과 같이 로그를 확인할 수 있다.
application.yml에 작성한 Database 설정이 잘 들어간 것을 확인할 수 있고,
H2 console도 사용 가능하며 , "Database available at 'jdbc:h2:mem:testdb'"로
설정한 url도 잘 적용된 것을 확인할 수 있다.

create table article (
    id bigint generated by default as identity,
    content varchar(255) not null,
    title varchar(255) not null,
    primary key (id)
)
를 통해 domain에 생성한 Article 엔티티도 잘 생성되었음을 확인할 수 있다

이제 POSTMAN을 확인한다.


위와 같이 세팅한 후, send하면 요청이 잘 수행되었으며
리소스가 잘 생성되었음을 202 Created 응답코드를 통해 확인할 수 있다.


테스트- h2 console

  • 스프링 부트 서버를 켠 상태로, http://localhost:8080/h2-console 에 접속한다.

    다음과 같이 JDBC URL을 작성하고 connect한다.

    이와같이 SELECT 하는 쿼리를 작성하면 이와 같이 H2 데이터베이스에 저장된 데이터를 확인할 수 있다.
    또한 왼쪽을 보면
    이와 같이 엔티티 내용을 바탕으로 테이블이 생성되고, 요청한 POST 요청에 의해 데이터가 실제로 저장된 것을 확인할 수 있다.

해당 글은 다음 도서의 내용을 정리하고 참고한 글임을 밝힙니다.
신선영, ⌜스프링 부트 3 벡엔드 개발자 되기 - 자바 편⌟, 골든래빗(주), 2023, 384쪽

profile
정도를 걷는 엔지니어

0개의 댓글