본문 바로가기
728x90

넓고 얕은 네트워크 지식/http7

HTTP 상태 코드 HTTP 상태 코드 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx (Informational) : 요청이 수신되어 처리중, 거의 사용하지 않음 2xx (Successful) : 요청 정상 처리 3xx(Redirection) : 요청을 완료하려면 추가 행동(유저 에이전트의 추가 조치)이 필요 4xx (Client Error) : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 5xx (Server Error) : 서버 오류, 서버가 정상 요청을 처리하지 못함 2xx (Successful) - 성공 200 OK : 요청 성공 201 Created : 요청 성공해서 새로운 리소스가 생성됨 202 Accepted : 요청이 접수되었으나 처리가 완료되지 않음 ex) 요청 .. 2022. 10. 25.
HTTP API 설계 POST 클라이언트는 등록될 리소스의 URI를 모름 회원등록 : POST /members 서버가 새로 등록된 리소스 URI를 생성해준다. HTTP/1.1 201 Created Location: /members/100 POST 기반의 등록을 컬렉션(Collection)이라고 한다. 서버가 관리하는 리소스 디렉터리 서버가 리소스의 URI를 생성하고 관리 여기서 컬렉션은 /members PUT 클라이언트가 리소스 URI를 알고 있어야 한다. 파일등록 : PUT /files/star.jpg 클라이언트가 직접 리소스의 URI를 지정한다. PUT 기반의 등록을 스토어(Store)라고 한다. 클라이언트가 관리하는 리소스 저장소 클라이언트가 리소스의 URI를 알고 관히 여기서 스토어는 /files HTTP API 다양.. 2022. 10. 23.
HTTP 메서드의 속성 안전(Safe) 호출해도 리소스를 변경하지 않는다. 안전은 해당 리소스의 변화만 고려함 GET, HEAD, OPTIONS, TRACE 멱등(Idempotent) f(f(x)) = f(x) 한 번 호출 하든 100번 호출하든 결과가 똑같다. GET -> PUT -> GET은? 멱등은 외부 요인으로 중간에 리소스가 변경되는 것까지는 고려하지 않는다. 멱등 메서드 GET : 항상 같은 결과가 조회 PUT : 결과를 대체함(덮어씀). 여러번 같은 요청을 해도 최종 결과는 같음 DELETE : 결과를 삭제함. 여러번 같은 요청을 해도 삭제된 결과는 같음 POST : 멱등이 아님! 두번 호출하면 같은 결제가 중복해서 발생하면 중복 결제로 오류임 활용 : 자동 복구 메커니즘, 같은 요청을 해도 괜찮을 때 캐시가능(C.. 2022. 10. 22.
HTTP 메서드 HTTP API를 만들 때 리소스와 행위를 분리해야한다. 가장 중요한 것은 리소스를 식별하는 것이다. URI는 리소스만 식별 리소스와 해당 리소스를 대상으로 하는 행위를 분리 리소스 : 회원 행위 : 조회, 등록, 삭제, 변경 리소스는 명사, 행위는 동사 ex) 미네랄(리소스)을 캐라(행위) 주요 메서드 GET : 리소스 조회 POST : 요청 데이터 처리, 주로 등록에 사용 PUT : 리소스를 대체, 해당 리소스가 없으면 생성 PATCH : 리소스 부분 변경 DELETE : 리소스 삭제 기타 메서드 HEAD : GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환 OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용) CONNECT : 대상 자원으로.. 2022. 10. 21.
HTTP 메시지의 구조 HTTP 메시지의 구조 start-line 시작 라인 header 헤더 empty line 공백 라인 (CRLF) message body 시작 라인 start-line = request-line / status-line 요청 메시지 request-line = method SP(공백) request-target SP HTTP-version CRLF(엔터) HTTP 메서드 : ex) GET 요청 대상 : /search?q=hello&hl=ko HTTP Version : HTTP/1.1 응답 메시지 status-line = HTTP-version SP ststus-code SP reason-phrase CRLF HTTP 버전 : ex) HTTP/1.1 HTTP 상태 코드 : 요청 성공, 실패를 나타냄 200 .. 2022. 10. 21.
HTTP의 특징 클라이언트 서버 구조 Request Response 구조 클라이언트와 서버의 역할이 분리되어 유지 보수가 쉬워짐 클라이언트는 서버에 요청을 보내고, 응답을 대기 서버가 요청에 대한 결과를 만들어서 응답 무상태 프로토콜 지향(Stateless) Stateful, Stateless의 차이 Stateful - 상태 유지 고객 : A 햄버거 세트 얼마인가요? 점원 : 5000원입니다. 고객 : 3개 주세요. 점원 : 15000원입니다. 현금과 카드 어떤 걸로 계산하시겠어요? 고객 : 카드로 할게요. 점원 : 결제되었습니다. Stateful - 점원이 바뀌는 경우 고객 : A 햄버거 세트 얼마인가요? 점원1 : 5000원입니다. 고객 : (잠시 뒤)3개 주세요. 점원2 : 네? 뭐를요? 고객 : 카드로 할게요. .. 2022. 10. 21.
HTTP의 기본 HTTP(HyperText Transfer Protocol) 웹(www) 상에서 정보를 주고받을 수 있는 프로토콜 http 메시지에 모든 것을 전송한다 HTML, TEXT 이미지, 음성, 영상, 파일 JSON, XML(API) 거의 모든 형태의 데이터 전송 가능 서버 간 데이터 송수신도 대부분 HTTP를 사용 지금은 HTTP의 시대 HTTP 역사 HTTP:/0.9 : GET 메서드만 지원, HTTP 헤더 x HTTP/1.0 : 메서드, 헤더 추가 HTTP/1.1 : 가장 많이 사용, 중요함 HTTP/2 : 성능 개선 HTTP 3 : TCP 대신에 UDP 사용, 성능 개선 기반 프로토콜 TCP : HTTP/1.1, HTTP/2 UDP : HTTP/3(점점 사용 증가 중) 2022. 10. 21.
728x90