일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백준 10815 # 백준 Java
- @Valid
- oauth2.0
- 이미지 업로드
- 스프링부트
- OpenAI API
- spring websocket nginx 설정
- GoormIDE
- Flask
- AWS
- 예외 처리
- 소셜 로그인
- 관점 지향 프로그래밍
- validation
- 도메인 주도 개발
- ec2 nginx websocket reverse proxy
- logout
- jwt
- session
- spring boot
- 패러다임 불일치
- S3
- springboot
- presigned url
- wss 연결 실패
- CustomException
- 자바 orm
- 개발 프로젝트
- fastapi
- 구글 로그인
Archives
- Today
- Total
개발세발은 안되요
[스프링부트3개발자되기] 06장 : 블로그 기획하고 API 만들기(2) 본문
6.4 블로그 글 목록 조회를 위한 API 구현하기
- stream 은 여러 데이터가 모여 있는 컬렉션을 간편하게 처리하기 위한 자바 8에서 추가된 기능이다.
- 테스트 코드를 작성할 때 import에 주의한다.(인텔리제이에서 자동 import를 했을 때 잘못된 파일에 접근하는 경우가 있다. )
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
6.5 블로그 글 조회 API 구현하기
@PathVariable : URL에서 값을 가져오는 애너테이션.
// 블로그 글 하나 조회
@GetMapping("/api/articles/{id}")
// URL 경로에서 값 추출
public ResponseEntity<ArticleResponse> findArticle(@PathVariable long id){
Article article = blogService.findById(id);
return ResponseEntity.ok()
.body(new ArticleResponse(article));
}
위의 코드에서 만약 URL 주소가 /api/articles/3 GET 요청을 받으면 id 값으로 3이 들어온다.
6.6 블로그 글 삭제 API 구현하기
- 삭제 API 에 대한 테스트코드를 작성할 때, 다음의 방식을 이용한다.
- 블로그 글 하나 생성함.
- 삭제 API 호출.
- 블로그 글 전체 조회했을 때 0개가 조회되며, 상태코드가 200 OK 인지 확인한다.
6.7 블로그 글 수정 API 구현하기
@Transactional : 매칭한 메서드를 하나의 트랜잭션으로 묶음.
트랜잭션
: 데이터베이스의 데이터를 바꾸기 위해 묶은 작업의 단위.
예를 들어 계좌 이체를 할 때에는 1. A계좌에서 출금 , 2. B계좌에 입금 이라는 두 과정을 거칠 수 있다. 그런데 만약 1의 과정은 성공하고 2의 과정은 실패하게 된다면 문제가 발생할 수 있다. 이를 막기 위해서는 1번과 2번 과정을 하나의 작업 단위로 묶어 두 작업을 한 단위로 실행하면 된다. 만약 중간에 실패한다면 트랜잭션의 처음 상태로 모두 되돌리면 된다.
트랜잭션을 이용할 경우 중간에 엔티티의 필드 값이 바뀌어 에러가 발생해도 제대로 된 값 수정을 보장해준다.
어려웠던 점- 메모 사항
- Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Failed to execute SQL script statement #1 of URL [file:/Users/mosuji/IdeaProjects/springboot-developer/out/production/resources/data.sql]: INSERT INTO article (title, content) VALUES ('제목1', '내용1')
- 해당 에러 발생 : yml 에 아래의 내용을 작성하지 않아서 발생한 에러였다. 하지만 이미 작성되어있는 상태였다.. 그래서 아래 내용이 적힌 부분의 위치를 바꿔주었더니 제대로 작용하였다.
defer-datasource-initialization: true
'책 > 스프링부트3 개발자 되기: 자바편' 카테고리의 다른 글
[스프링부트3개발자되기] 09장 : JWT로 로그인/로그아웃 구현하기 (0) | 2024.05.11 |
---|---|
[스프링부트3개발자되기] 08장 : 스프링 시큐리티로 로그인/로그아웃, 회원가입 구현하기 (1) | 2024.05.03 |
[스프링부트3개발자되기] Ch6 : 블로그 기획하고 API 만들기(1) (0) | 2024.03.30 |
[스프링부트3개발자되기] 05장 : 데이터베이스 조작이 편해지는 ORM (0) | 2024.03.22 |
[스프링부트3개발자되기] 04장: 스프링 부트 3과 테스트 (0) | 2024.03.21 |