HTTP 메소드의 몇가지는 OpenWeatherMap 사이트에서 제공해주는 날씨 데이터 통해 실습해보고자 한다.
- 회원 가입 후 개인 정보에 있는 My API를 확인한다.
Postman 프로그램을 이용하여 HTTP 메시지에 대한 요청/응답을 확인해 보고자 한다.
- 위 사이트에서 다운로드 후 회원가입 없이 진입한다 (빠르게 하기 위해)
- New Collection 생성
HTTP 요청 메소드
- 주어진 리소스에 대한 행동 요청 (GET, POST, PUT, DELETE 등)
1. GET : 리소스 수신 요청 (Read)
- 서울의 날씨를 요청한다. (GET 메소드 사용)
- <API값> 에 본인 API 를 입력한다.
하단부 결과 확인
Status = 상태코드 (200 OK = 성공적인 요청)
Time = 소요시간
Size = Data Size
정상적으로 서울의 경도, 위도, 날씨 상태, 온도, 습도 등의 데이터를 수신한것을 확인할 수 있다.
2. POST : 리소스 생성 (Create) - JSON 형식 (경량 데이터 교환 형식, 사람과 기계 모두 이해하기 쉽고 서버-클라 교류간 사용)
- POST 를 사용하여 리소스 생성 요청
HttpRequest
POST /student
[
{
“username”: “가나다”,
“text”: 1,
"roomname" : 로비
}
]
- POST 를 사용하여 리소스 생성 요청
HttpResponse
HTTP/1.1 200 OK
[
{
"id ": 1, // 리소스에 대한 고유 ID
“username”: “가나다”,
“text”: 1,
"roomname" : 로비
"date": "2021-04-02 12:00:00". // 리소스 생성 시간
}
]
=> 리소스 생성에 대한 필수 항목들을 전부 입력해야 한다.
=> 리소스 고유 ID가 생성되며 이를 이용하여 PUT(수정) 사용
=> POST는 자원에 대한 생성을 담당하며 여러번 같은 요청시 새로운 리소스가 계속해서 생성된다.
3. PUT-전체, PATCH-일부 : 리소스 수정 (UPDATE)
- PUT을 사용하여 리소스 수정 요청
=> PUT 요청 시 모든 항목을 입력하여야 하며 미입력 시 Default값이 적용된다.
- PATCH를 사용하여 리소스 수정 요청
=> 항목의 일부분만 수정이 가능하다. (나머진 기존 데이터 유지)
*****
=> PUT/PATCH 를 통해 같은 요청을 반복해서 보낸다면 같은 리소스를 반환한다. (멱등성)
=> PUT은 대상이 없으면 만들어내고 역동성이 있다.
=> PATCH는 대상이 있어야만 실행된다.
4. DELETE : 데이터 삭제
- 특정 리소스 삭제 시 사용된다. (요청 시 끝에 /clear 붙힘)
HTTP 상태코드
- HTTP 요청에 대한 응답코드
* 100번대 (요청 확인 및 프로세스 진행)
- 100 (Continue): 서버로 보낸 요청에 문제가 없으며 다음 요청을 보내도 된다.
- 101 (Switching Protocols): 클라이언트의 헤더를 통해 요청한 것에 따라 서버가 프로토콜을 바꾼다는 것을 응답한다.
- 103 (Early Hints) : 서버가 응답을 준비하는 동안 사용자가 자원을 미리 읽어 들일 수 있도록 한다.
* 200번대 (성공적인 요청 인식)
- 200 (OK) : 요청이 성공했음을 의미한다. (성공의 의미는 HTTP 요청 메소드에 따라 다르다)
- 201 (Create) : 요청이 성공적으로 처리되었으며, 자원이 생성되었다.
- 204 (No Content) : 요청이 성공했으나 현재 페이지에서 벗어나지 않아도 된다. (PUT or DELETE 의 성공 결과로 종종 출력됨)
* 300번대 (요청 완료를 위한 추가 조치 필요)
- 301 (Moved Permanently) : 요청한 리소스가 헤더에 주어진 URL로 완전히 옮겨졌다.
- 302 (Found) : 요청한 리소스가 헤더에 주어진 URL로 일시적으로 옮겨졌다.
* 400번대 (클라이언트의 요청 문법 오류 or 처리 불가)
- 400 (Bad Request) : 서버가 클라이언트의 오류를 감지해 요청을 처리할 수 없거나 하지 않는다.
- 401 (Unauthorized) : 유효한 인증 자격 증명이 없기 때문에 요청이 적용되지 않았다.
- 404 (Not Found) : 클라이언트가 요청한 리소스를 서버가 찾을 수 없다. (broken link, dead link 에서 볼 수 있음)
- 리소스가 영구적으로 삭제되었다면 410 상태코드가 출력되어야 한다.
* 500번대 (서버가 유효한 요청에 대한 응답 실패)
- 500 (Internal Server Error) : 요청을 처리하는 과정에서 서버가 예상하지 못한 상황에 놓였다.
- 501 (Not Implemented) : 요청을 수행할 수 있는 기능을 서버가 지원하지 않는다.
- 502 (Bad Gateway) : 서버가 게이트웨이나 프록시 서버 역할을 하면서 업스트림 서버로부터 유효하지 않은 응답을 받았다.
웹페이지에서 F12를 눌러 개발자모드에서 간단하게 요청에 대한 Status를 확인 할 수 있다.
참고
https://developer.mozilla.org/ko/docs/Web/HTTP
'DevOps > DevOps' 카테고리의 다른 글
[Mac OS]Mac 환경에서 nginx 실행하기 (0) | 2022.12.15 |
---|---|
[Mac OS]웹서버 - 클라이언트 간단 실습 (netcat-nc) (0) | 2022.12.11 |
HTTP Message 구성 및 특징 (0) | 2022.12.08 |
클라이언트 - 서버 아키텍처 (2티어 아키텍처, 3티어 아키텍처, API) (0) | 2022.12.06 |
클라우드 서비스에 대한 규모 확장의 종류 (수직확장, 수평확장) (0) | 2022.11.30 |