Posts.java (Entity 클래스)
PostsRepository.java
PostSaveRequestDto.class (web -> dto)
PostsService.java (서비스)
PostsApiController (컨트롤러)
등록하기 테스트
@Test
public void Posts_등록된다() throws Exception{
//given
String title="title1";
String content="content1";
PostSaveRequestDto requestDto=PostSaveRequestDto.builder()
.title(title)
.content(content)
.author("author")
.build();
String url="http://localhost:"+port+"/api/vi/posts"; // PostApiController에 PostMapping부분에 있는 곳이랑 위치가 똑같아야함.
//when
ResponseEntity<Long> responseEntity = restTemplate.
postForEntity(url,requestDto,Long.class);
//then
assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(responseEntity.getBody()).isGreaterThan(0L);
List<Posts> all=postsRepository.findAll();
assertThat(all.get(0).getTitle()).isEqualTo(title);
assertThat(all.get(0).getContent()).isEqualTo(content);
}
RestTemplate이란?
: 스프링에서 제공하는 http 통신에 유용하게 쓸 수 있는 템플릿입니다.
즉 다른 서버의 API endpoint를 호출할 때 RestTemplate을 많이 씁니다.
HTTP 서버와의 통신을 단순화하고
RESTful 원칙을 지킵니다.
HttpClient를 HttpEntity의 json, xml 등으로
추상화해서 제공해줍니다.
RestTemplate을 쓰지 않는다면,
json, xml 라이브러리를 사용하여
직접 변환해야 합니다.
postForEntity의 구조는 이렇습니다.
Post 요청을 보내는 메서드로
매개변수로 url과 request 객체와 response 타입을 넘겨줍니다.
그러면 return으로 ResponseEntity를 반환해줍니다!
getBody()
-> entity의 body를 리턴해줍니다.
RestTemplate 참고 출처
https://velog.io/@seongwon97/Spring-Boot-Rest-Template
참고서적 및 링크
: 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
'여니의 프로그래밍 study > Spring & Spring Boot' 카테고리의 다른 글
[스프링부트] PostApiController Test 작성 (게시글 수정 기능) (0) | 2022.03.22 |
---|---|
[스프링부트] HTTP 구조 - header , body (0) | 2022.03.22 |
[스프링부트] given - when - then 패턴 (0) | 2022.03.22 |
[스프링부트] @Autowired와 private final 차이점 (1) | 2022.03.22 |
[스프링부트] 순환 참조 문제란? (0) | 2022.03.22 |