티스토리 뷰

1. GET 요청

  • 서버에 저장된 리소스를 조회하기 위해서 사용된다.
  • 조회하고자 하는 데이터를 쿼리 스트링에 포함하여 서버로 전달한다.
  • 쿼리 스트링이 아닌 메시지 바디에 포함하여 전송할 수 있으나, 이를 모든 브라우저에서 지원하지 않으므로 권장되지 않는 방법이다.
  • 리소스 조회 후 캐시에 저장하고, 이후에 동일한 데이터 조회 시에 서버로의 요청을 가로채어 캐싱된 데이터 복사본을 반환한다.
  • 리소스를 정상적으로 조회하면 200 OK를 반환한다.

 

2. POST 요청

  • 서버에 새로운 리소스를 생성하기 위해서 사용된다.
  • 서버로 요청하고자 하는 데이터를 메시지 바디에 포함한다.
    • ex. example.com/posts
    • 메시지 바디
      {
          "content":"test", 
          "username":"test"
      }
    • POST 요청은 캐싱되지 않는다.
    • 리소스를 정상적으로 생성하면 200 OK 또는 201 CREATED를 반환한다.

 

3. PUT 요청

  • 기존의 리소스를 완전히 덮어 씌우기 위해 사용된다.
    • 서버에 리소스 존재 : 해당 리소스를 새로운 데이터로 덮어 씌운다.
    • 서버에 리소스 존재 X : 새로운 리소스를 생성한다.
  • 일부 데이터만 덮어 씌울 수 없다.
    • 기존 리소스
      {
          "content":"test", 
          "age":99
      }
    • 변경된 데이터 기존 리소스에서 “age”만 98로 변경하도록 PUT 요청을 날린 경우, 기존의 “username”이 삭제된다.
      {
          "age":98
      }

 

4. PATCH 요청

  • 기존의 리소스의 일부만 덮어 씌울 수 있다.
    • PUT 요청과 달리 일부 데이터만 수정할 수 있다.
    • 기존 리소스
      {
          "content":"test", 
          "age":99
      }
    • 변경된 리소스
      {
          "content":"test", 
          "age":98
      }

 

5. DELETE 요청

  • 서버에 저장된 리소스를 제거하기 위해서 사용한다.
  • 상태 코드로 200 OK 또는 204 No Content를 응답한다.

 

6. HEAD 요청

  • GET 요청과 동일한 방식으로 사용되나, 응답 본문을 포함하지 않는다.
    • 조회된 리소스에 대한 헤더 정보만을 응답한다.
      HEAD /resource HTTP/1.1
      Host: example.com

      HTTP/1.1 200 OK
      Content-Type: text/html
      Content-Length: 1234
      GET과 동일한 헤더 응답을 내리지만, 조회된 리소스 데이터를 포함하지 않는다.

 

7. OPTIONS 요청

  • CORS(Cross-Origin-Resource-Sharing) 정책과 관련된 HTTP 메서드
  • 서버로 실제 요청을 날리기 전에 OPTIONS 메서드를 사용하여 사전 요청을 보낸다.
    사전 요청을 통해 서버로 실제 요청을 허용하는지 응답으로 반환한다.

7-1. Preflight 요청

클라이언트 → 서버로 실제 요청을 보내기 전에 Preflight 요청을 통해 서버가 요청을 허용하는지 확인한다.

- /api/data : 요청된 리소스 경로

- Host: example.com : 요청을 보내는 서버의 호스트

- Origin : 요청을 보낸 출처(클라이언트의 도메인)

- Access-Control-Request-Method: 실제 요청 HTTP 메서드

- Access-Control-Allow-Headers : 서버가 허용하는 요청 헤더

OPTIONS /api/data HTTP/1.1
Host: example.com
Origin: http://example-client.com
Access-Control-Request-Method: POST
Access-Control-Allow-Headers: Content-Type

 

7-2. 사전 요청에 대한 서버의 응답

사전 요청에 대한 서버의 응답 OPTIONS 메서드로 온 요청에 대하여 서버가 응답한다. OPTIONS 메서드의 요청에 대하여 서버가 응답한다.
- 204 No Content : 서버가 Preflight 요청을 성공적으로 처리했음을 의미한다. Prefligt 요청 특성상 본문에 포함할 데이터가 없다.

- Access-Control-Allow-Origin: 서버가 허용하는 출처

- Access-Control-Allow-Methods: 서버가 허용하는 HTTP 메서드

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: http://example-client.com
Access-Control-Allow-Methods: POST, GET, OPTIONS

 

7-3. 실제 요청

Preflight 요청을 통해 얻은 응답으로부터 클라이언트의 출처가 허용되면 서버로 실제 요청을 보낸다.

POST /api/data HTTP/1.1
Host: example.com
Origin: http://example-client.com
X-Custom-Header: value
Content-Type: application/json

{ "key": "value" }

 

7-4. 실제 요청에 대한 서버의 응답

HTTP/1.1 200 OK
Content-Type: application/json
Access-Control-Allow-Origin: http://example-client.com

{
    "response": "example response"
}
Total
Today
Yesterday
최근에 올라온 글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30