JAVA/코딩자율학습-스프링부트

[코딩 자율학습 스프링부트] 11장 HTTP와 REST 컨트롤러

우준세 2024. 12. 8. 13:19
728x90
반응형

| REST API 구현 과정 

  • 조회 요청 : /api/articles 또는 /api/articles/{id}
    > GET 메서드로 전체, 단일 Article 조회
  • 생성 요청 : /api/articles
    > POST 메서드로 새로운 Article 생성
  • 수정 요청 : /api/articles/{id}
    > PACTH 메서드로 특정 Article 내용 수정
  • 삭제 요청 : /api/articles/{id}
    > DELETE 메서드로 특정 Article 삭제

| REST API 구현

| REST 컨트롤러와 일반 컨트롤러 차이

  • REST 컨트롤러 : JSON, 텍스트 데이터 반환
  • 일반 컨트롤러 : 뷰 페이지 반환 

| GET 구현

- 전체 게시글 조회

GET 메서드를 사용해 localhost:8080/api/articles 로 요청을 보냈는데 에러 응답이 돌아왔습니다. \

이는 GET 요청을 받을 메서드를 만들어 에러를 처리했습니다.

 

@RestController 어노테이션을 추가해 REST 컨트롤러라는 것을 선언하고

@GetMapping으로 " /api/articles" 주소로 URL 요청을 받습니다.

 

전체 게시글을 조회해야 하기 때문에 List<Article>로 반환받고

findAll() 메서드를 사용해 DB에 저장된 전체 Article을 가져와 반환합니다.

 

결과) Talend API Tester를 이용해 GET 요청 보내기 

 

- 단일 게시글 조회

@GetMapping의 URL을 " /api/articles/{id}" 로 수정하고 

반환형을 Article로 하여 @PathVariable을 붙여 매개변수로 id를 받아오게 했습니다.

 

 

| POST 구현

@PostMapping으로 "/api/articles"  주소로 오는 URL 요청을 받습니다.

수정할 데이터를 dto 매개변수로 받아와 Entity로 변환해 DB에 저장 후 반환합니다.

결과)

 

| PATCH 구현

@PatchMapping를 사용해 " /api/articles/{id}"  주소로 오는 URL 요청을 받고 

매개변수로 요청 URL의 id와 요청 메시지 데이터를 받아와 처리합니다.

 

  1. 수정용 Entity를 생성
  2. DB에 대상 Entity가 있는지 조회
  3. Entity가 없거나 id가 잘못됐을 때의 예외 처리
  4. Entity가 있으면 업데이트 후 정상 응답 (200) 전송

결과) 

 

| Delete 구현

URL은 " /api/articles/{id}" 로 전송하며

@DeleteMapping " /api/articles/{id}"  URL 요청을 받습니다.

ResponseEntity에 Article을 실어 보내는 메서드를 만들고 URL의 id를 매개변수로 받습니다.

 

결과)

 

728x90
반응형