@RestController // REST API용 컨트롤러
public class FirstApiController {
}
localhost:8080/api/hello로 URL 요청이 들어왔을 때 hello world!를 출력하는 메서드
public class FirstApiController {
@GetMapping("/api/hello") // URL 요청 접수
public String hello() { // hello world! 문자열 반환
return "hello world!";
}
}
@RestController // REST 컨트를러 선언
public class ArticleApiController {
// GET
// POST
// PATCH
// DELETE
}
모든 게시글 조회하기
public class ArticleApiController {
@Autowired-------------------------------- © 게시| 리파지터리 주입
private ArticleRepository articleRepository;
// GET
©GetMapping('7api/articles")------ O URL 요청 34
public List<Article> indexO { — © indexO 에서드 정의
return articleRepository.findAll();
}
(중략)
}
단일 게시글 조회하기
// GET
@GetMapping("/api/articles")
public List<Article> index() {
return articleRepository.findAllO;
}
@GetMapping("/api/articles/{id}") // 코드를 붙여 넣고 URL 수정
public Article show(@PathVariable Long id) // show() 메서드로 수정, URL의 id를 매개변수로 받아오기
return articleRepository.findById(id),orElse(null);
}
//POST
@PostMapping("/api/articles") // URL 요청 접수
public Article create(ArticleForm dto) { // create() 메서드 정의
Article article = dto.toEntityO;
return articleRepository.save(article);
}
//POST
@PostMapping("/api/articles") // URL 요청 접수
public Article create(@RequestBody ArticleForm dto) {
// 어노테이션 추가 -> 본문(BODY)에 실어 보내는 데이터를 create() 메서드의 매개변수로 받아옴
(중략)
}
데이터 전체를 수정할 경우
// PATCH
@PatchMapping("/api/articles/{id}") // URL 요청 접수
public Article update (@Pathvariable Long id, // update() 메서드 정의
@RequestBody ArticleForm dto) {
}
// PATCH
@PatchMapping("/api/articles/{id}")
public Article update (@Pathvariable Long id, @RequestBody ArticleForm dto) {
메서드의 본문은 다음 네 부분으로 나누어 작성
// 1. DTO -> 엔티티 변환하기
// 2. 타깃 조회하기
// 3. 잘못된 요청 처리하기
// 4. 업데이트 및 정상 응답(200)하기
}
@Slf4j // 3. 로그를 찍을 수 있게 어노테이션 추가
@RestController
public class ArticleApiController {
(중략)
public Article update (@Pathvariable Long id, @RequestBody ArticleForm dto) {
// 1. DTO -> 엔티티 변환하기
Article article = dto.toEntity(); // 1. dto를 엔티티로 변환
log.info("id: {}, article: {}", id, article.toString()); // 2. 로그 찍기
}
Article target = articleRepository.findById(id).orElse(null);
public ResponseEntity<Article> update(@PathVariable Long id, // 3. 반환형 수정
@RequestBody ArticleForm dto) {
(중략)
// 3. 잘못된 요청 처리하기
if (target == null || id != article.getId()) { // 1. 잘못된 요청인지 판별
// 400, 잘못된 요청 응답!
log.info("잘못된 요청! id: {}, article: {}", id, article.toString()); // 2. 로그 찍기
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null); // 4. ResponseEntity 반환
}
}
Article updated = articleRepository.save(target); // 1. article 엔티티 DB에 저장
return ResponseEntity.status(HttpStatus.OK).body(updated); // 2. 정상 응답