728x90
반응형
웹서버의 자원을 클라이언트에 구애받지 않고, 사용할 수 있도록 하는 설계방식.
HTTP를 통해 서버의 자원을 다루게 하는 기술.
서버의 응답은 특정 기기에 종속받지 않고 모든 기기에 통용될 수 있는 데이터만을 반환함.
@GetMapping("/api/articles")
public List<Article> index(){
return articleRepository.findAll();
}
@GetMapping("/api/articles/{id}")
public Article index(@PathVariable Long id){
return articleRepository.findById(id).orElse(null);
}
Get요청시 보여줄 데이터만을 리턴한다.
특정id값의 데이터만 보여줄 때는 PathVariable로 id값을 url로 받고, repository를 통해 해당id에 해당하는 데이터만 찾아 보내준다.
여러 데이터의 묶음을 보여줄 때는 List타입으로 반환하면 된다.
@PostMapping("/api/articles")
public Article create(@RequestBody ArticleForm dto)
{
Article article = dto.toEntity();
return articleRepository.save(article);
}
Post처리
dto로 데이터를 받아오기 위해 파라미터로 dto를 넣어준다.
받아온 dto는 entity로 반환하고,
repository를 통해 entity를 저장하면 된다.
그런데, JSON데이터를 받아오기 위해서는 dto 파라미터에 @RequestBody 어노테이션을 붙여줘야한다.
@PatchMapping("/api/articles/{id}")
public ResponseEntity<Article> update(@PathVariable Long id, @RequestBody ArticleForm dto){
//1. 수정용 엔티티 생성
Article article = dto.toEntity();
//2. 대상 엔티티 조회
Article target = articleRepository.findById(id).orElse(null);
//3. 잘못된 요청 처리
if(target == null || article.getId() != id){
log.info("wrong request id:{} , article{} ",id,article.toString());
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
}
//4. 업데이트 및 정상응답
target.patch(article);
Article updated = articleRepository.save(article);
return ResponseEntity.status(HttpStatus.OK).body(updated);
}
@DeleteMapping("/api/articles/{id}")
public ResponseEntity<Article> delete(@PathVariable Long id){
Article target = articleRepository.findById(id).orElse(null);
if(target==null){
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
}
//삭제
articleRepository.delete(target);
return ResponseEntity.status(HttpStatus.OK).build();
}
Delete는, PathVariable로 삭제할 데이터의 id값을 받아오고
DB에서 해당 엔티티를 가져온다.
해당 엔티티가 존재하지 않는 경우는 잘못된 요청 처리를 하고
해당 엔티티가 존재한다면, DB에서 해당 데이터를 삭제하고
정상응답을 해주면 된다.
728x90
반응형
'웹개발 > SpringBoot' 카테고리의 다른 글
테스트코드 작성하기 (0) | 2023.03.11 |
---|---|
Service와 Transaction (0) | 2023.03.11 |
글 삭제하기(DB 데이터 삭제하기) (0) | 2023.03.09 |
스프링부트 .sql 파일 실행오류, 엔티티 id자동생성 오류 (0) | 2023.03.09 |
게시물 수정하기(DB 갱신) (0) | 2023.03.09 |
댓글