복습용으로 기록, 모든 내용이 있지 않습니다.
18강
미션:{json} Placeholder 사이트를 활용하여 RestAPI의 동작 흐름을 분석하시오
RestAPI란
19강
미션:기존 article 데이터를 crud하기 위한 restAPI를 구현하시오
JSON은 key와 value의 쌍으로 이루어져있다.
@RestController //RestAPI용 컨트롤러, JSON 반환

에러 종류

일반 컨트롤러는 뷰템플릿페이지를 반환함

REST컨트롤러는 일반적으로 JSON을 반환하고, 또는 데이터를 반환하기도 함


모든 articles의 데이터를 JSON으로 반응 받고 싶은데 에러가 남->얘를 받아주는 RestController의 메서드가 없어서 그렇다


200 성공적으로 전송됐지만 null값이 들어가 있는 걸 볼 수 있다. 기존에는 Form에서 던지면 그냥 던져도 됐었는데 Rest API에서 JSON으로 던질 경우에는 그냥 받아지지가 않는다. 따라서 @RequestBodyf를 추가해야한다.(JSON데이터 받는 역할)

@RequestBody ArticleForm dto : @RequestBody에서 dto를 받아와라

//PATCH
@PatchMapping("/api/articles/{id}")
public ResponseEntity<Article> update(@PathVariable Long id, @RequestBody ArticleForm dto) {
//ResponseEntity<Article>이렇게 ResponseEntity로 담아 보내야 여기에 상태코드(400번)를 실을 수 있다.
.
.
.
.
//3.잘못된 요청 처리(대상이 없거나, id가 다른 경우(요청은 1인데 json은 3이다))
if(target == null || id != article.getId()){
//400, 잘못된 요청 응답해야함
log.info("잘못된 요청! id: {}, article: {}", id, article.toString() );
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null) //HttpStatus.BAD_REQUEST 400번을 뜻함
}


//4.업데이트 및 정상 응답(200)
target.patch(article); //target에 article을 붙여야 title을 빼도 title이 null로 표시되지 않는다
Article updated=articleRepository.save(target);
return ResponseEntity.status(HttpStatus.OK).body(updated);
19강에서 쓴 코드를 20강에서 리팩토링 하기때문에 19강 끝나고 git commit하는 것이 좋다
20강
미션 Rest API구현에 Service계층을 추가하시오

service란 cotroller와 repository 사이에 있는 계층으로서 처리업무의 순서를 총괄한다.
트랜잭션
서비스의 업무가 트랜잭션 단위로 진행된다.

트랜잭션이란 모두 성공되어야 하는 일련의 과정을 뜻함, 실패시 진행 초기로 돌리는 것을 롤백이라고 함
ArticleApiController을 리팩토링한다
원래는 웨이터와 요리하는 작업을 같이 했다면 20강에서는 ArticleApiController에서 웨이터 일만 할 수 있게 한다.
Service는 주방장 일을 한다.
트랜잭션

@PostMapping("/api/transaction-test")
public ResponseEntity<List<Article>> transactionTest(@RequestBody List<ArticleForm>dtos){
}
탈랜드 바디부분에 던져진 데이터 3개를 코드에서 받아야하니까 @RequestBody List<ArticleForm> 로 적는다.
@RequestBody로 받아오고 ArticleForm 데이터가 여러개니까 List로 묶는다
21강
미션:기존Article 서비스를 검증하는 테스트 코드를 작성하시오
테스트란 우리 의도대로 프로그램이 동작하는지 확인하는 작업
기존처럼 서버 키고 주소 입력하고 디비 확인하고 이런 일련의 과정들을 최소화할 수 있다

테스트 통과시 더 좋은 코드로 바꾸는 리팩토링
실패 시 디버깅 통해 코드 고치기
다양한 상황에 맞게 하는 것을 테스트 케이스라함 테스트 케이스는 크게 실패와 성공으로 나누어짐
조건에 따라 다양한 성공과 실패가 있다.

TDD:테스트 코드를 만들고 테스트를 통과하는 최소한 코드로 시작해서 점진적으로 개선, 확장해나가는 개발 방식
'Springboot' 카테고리의 다른 글
| 홍팍 스프링부트 6 (0) | 2023.08.03 |
|---|---|
| Spring 홍팍 스프링부트, 입문 강의 기록 3 (0) | 2023.08.03 |
| Spring 홍팍 스프링부트, 입문 강의 기록 2 (0) | 2023.08.03 |
| 홍팍 스프링부트 4 (0) | 2023.08.01 |
| 홍팍 스프링부트 강의 정리1 (0) | 2023.07.31 |