
@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 : 서버 상에 문제가 있어 요청에 실패
spring:
jpa:
show-sql: true # 전송 쿼리 확인
properties:
hibernate:
format_sql: true
defer-datasource-initialization: true
datasource:
url: jdbc:h2:mem:testdb
h2:
console:
enabled: true
테스트 과정은 이러하다.
{
"title" : "제목",
"content": "내용"
}
일단.
스프링 부트 서버를 실행하면,

다음과 같이 로그를 확인할 수 있다.
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 응답코드를 통해 확인할 수 있다.



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