Network/2. HTTP

RESTful API 설계

snowkit 2022. 2. 22. 13:45

Method

  • 주로 사용하는 HTTP Method는 다음 5개가 있다.
    • GET
    • POST
    • PUT
    • PATCH
    • DELETE
  • 서버에 따라 GET, POST 외에는 지원하지 않는 경우도 있다.
    • 이 경우 PUT, PATCH, DELETE 대신 POST를 사용한다.
  • 서버에 따라 GET 메소드의 HTTP Body를 받지 못하는 경우도 있다.
    • 이 경우 클라이언트의 URL에 정보를 노출시키고 싶지 않거나 HTTP Body에 담아서 보내야 할 때 POST를 사용한다.
  • 클라이언트 라이브러리에 따라서 GET 메소드에 HTTP Body를 보내지 못하는 경우도 있다. 이 경우 POST를 사용한다.
    • JavaScript의 Fetch API (GET 메소드에서 HTTP Body 지원하지 않음)

Member Schema

{
    "id": 136,
    "name": "김도진",
    "age": 20
}

GET

  • 목록 조회
    • /members
  • 상세 유저 조회
    • /members/{id}

POST

  • 유저 생성
    • /members
  • 생성 후 id를 알 수 있다.

PUT

  • 특정 id 유저 정보 대체 (replace)
    • /members/{id}
  • 해당 id가 없으면 요청한 정보로 새 유저 생성
  • id를 알고 있어야 한다.
  • 요청한 정보로 특정 유저 정보를 완전히 대체한다.
    • age만 입력해서 요청하는 경우 name은 빈 값이 된다. (id는 고정)

PATCH

  • 특정 id 유저 정보 일부 변경 (update)
    • /members/{id}
  • age만 입력해서 요청하는 경우 name은 기존 값이 유지된다.

DELETE

  • 특정 id 유저 정보 삭제
    • /members/{id}

Annotation

@PathVariable

  • 중괄호 내부의 문자열과 일치하는 변수명에 값을 저장한다.
    • 변수명이 중괄호 내부의 문자열과 달라도 @PathVariable("key") 형식으로 어노테이션 프로퍼티에 직접 지정할 수 있다.
  • /members/{id}는 다음과 같이 사용할 수 있다.
    @RequiredArgsConstructor
    @RequestMapping("/members")
    @RestController
    public class MemberController {
    
        private final MemberService memberService; 
    
        @GetMapping("/{id}")
        public ResponseEntity<Member> detail(@PathVariable int id) {
        	Member member = memberService.get(id);
            
            return ResponseEntity.ok(member);
        }
    }​

'Network > 2. HTTP' 카테고리의 다른 글

Spring RESTful API 특징  (0) 2022.02.22