CS/HTTP
[HTTP] 상태 코드
HTTP 상태코드 클라이언트가 서버에게 보낸 후 요청의 처리 상태를 응답해서 알려주는 기능입니다. 1xx, 2xx, 3xx, 4xx, 5xx 까지 있는데 각각의 기능이 있습니다. 1xx Information 2xx Successful 3xx Redirection 4xx Client Error 5xx Server Error 만일 HTTP의 버전이 업데이트 되어서 서버에서는 더 많은 상태코드가 지원이 된다면 클라이언트는 HTTP의 버전이 서버보다 낮아서 이를 해석할 수 없게 될까요? 299 -> ?? 클라이언트는 이를 상위 상태코드로 해석하여 처리합니다. 즉 299 -> 2xx로 클라이언트가 이해할 수 있는 HTTP 버전 상태코드로 해석합니다. 1xx information 요청이 수신되어 처리중을 의미합니다..
[HTTP] HTTP API 설계 방법 기초
POST 기반 등록 방식 회원의 [ic]CRUD[/ic]를 예로 들면 그림과 같이 설계할 수 있습니다. Update 수정에 관해서는 3가지 메서드 중에 고려할 수 있는데 회원 정보가 많아질수록 [ic]PUT[/ic]을 사용하면 회원정보 싹 다 새로 넣어야 되서 시간과 자원을 많이 소모할 수 있습니다. 왠만하면 [ic]PATCH[/ic]를 사용하며 게시물 수정같은 글을 통채로 갈아끼워 넣어야 할 때는 [ic]PUT[/ic]을 쓰기도 합니다. 서버에서 리소스를 생성하고 관리 클라이언트는 등록될 리소스의 [ic]URI[/ic]를 모릅니다. 회원을 등록하고싶을 때 [ic]/members[/ic]만 넘기면 서버에서 알아서 리소스 [ic]URI[/ic]를 생성해서 등록해줍니다. 포인트는 서버가 알아서 리소스를 만든..
[HTTP] 클라이언트에서 서버로 데이터 전송 방법
데이터 전달 방식 Query parameter Message body 정적 데이터 조회 이미지나 텍스트 문서 같은 정적 데이터는 조회할 때 GET을 사용하고 쿼리 파라미터도 없이 리소스 경로만으로 단순하게 조회 가능합니다. // Request GET /static/hyeok.jpa HTTP/1.1 Host: localhost:8080 // Response HTTP/1.1 200 OK Content-Type: image/jpeg Content-Length: 34012 lkj123kjhgjhg41234klh345fsfds1234j7767hs;12jh3fgjhf32145 k23jgk;sdoiuoxcv;35463456lhkj3k4jg.... 동적 데이터 조회 데이터를 받아서 서버 뒷단에 비즈니스 로직을 처리한 ..
[HTTP] HTTP 메서드
API URI 설계 방법 우선 프로젝트를 설계할 때 URI마다 역할을 나눠서 보여주기 위해 알아보기 쉬운 URI를 설계해야 합니다. HTTP의 기능을 그대로 지키며 최대한 HTTP의 능력을 뽑아내기 위해서는 URI의 계층 구조를 활용하여 설계해서 리소스를 식별할 수 있어야 합니다. 리소스와 해당 리소스를 대상으로 하는 행위를 분리합니다. 여기서 리소스는 회원이며, 행위는 조회, 등록, 삭제, 변경을 의미합니다. 이제 이 행위를 HTTP 메서드로 구분합니다. 주요 메서드의 기능을 구분하면 이러합니다. GET : 리소스 조회 POST : 요청 데이터 처리, 주로 등록에 많이 사용 PUT : 리소스를 대체, 해당 리소스가 없으면 새로 생성 PATCH : 리소스 부분 변경, 특정 필드 몇개만 바꿀 때 사용 DE..
[HTTP] HTTP란?
HTTP는 거의 모든 형태의 데이터를 메세지 형태로 전송할 수 있는 프로토콜 클라이언트 서버 구조, 무상태 프로토콜, 비연결성, 메세지 구조를 통한 단순함과 확장성 개요 HTML, text, image, 음성, 영상, 파일, JSON, XML ... 거의 모든 형태의 데이터를 이 HTTP 메세지에 전송 가능합니다. 게임 서버 (TCP 이용)나 특정 앱 등은 HTTP를 사용을 잘 안하지만 요즘은 HTTP를 자주 사용하고 있습니다. HTTP 버전 별 역사 HTTP/0.9 1991년에 처음 등장했으며 GET 메서드만 지원했었습니다. 또한 HTTP 헤더라는 개념이 없었습니다. HTTP/1.0 1996년에 나왔으며 이때부터 GET 이외에 다양한 메서드가 추가되었고 헤더도 추가되었습니다. HTTP/1.1 1997년..
[HTTP] 웹 브라우저 요청 흐름 간단 요약
HTTP Request 패킷을 전송하고 HTTP Response 패킷을 받는다 요청 흐름 만일 다음과 같은 URL을 주소창에 치고 Enter를 클릭했다면 어떻게 요청하고 응답받는지 과정을 아주 간단하게 보여드리겠습니다. 일단 Browser에서 HTTP Request 패킷을 생성합니다. 이 안에는 다음과 같이 메서드, 쿼리, HTTP 버전, Host 정보 등이 들어있습니다. 이 패킷을 전송하여 google server에서 차례로 디캡슐화 하며 HTTP 정보를 해석합니다. 이후 google server에서 Response 패킷을 만들어 전달합니다. 이 때는 HTTP 버전과 잘 보냈는지 확인할 수 있는 오류코드, 보낼 데이터 타입(html, UTF-8) 그리고 html 데이터 등이 들어있습니다. 이를 Web ..
[HTTP] URL
URI 안에 URL과 URN이 있다. Locator, Name URI와 URL, URN의 차이 Uniform Resource Identifier Uniform Resource Locator Uniform Resource Name 그림과 같이 URI가 포괄적인 개념이고 그 안에 URL과 URN이 있습니다. 현재 URN은 사용하기 어려워 보편화 되지 않아서 거의 안쓰고 URL을 많이 사용하고 있습니다. 그래서 URI와 URL을 거의 같은 의미로 사용하고 있습니다. URI란 영어 한 단어씩 해석하면, Uniform : 리소스를 식별하는 통일된 방식 Resource : 자원, URL로 식별할 수 있는 모든 것 Identifier : 다른 항목과 구분하는데 필요한 정보 라고 해석할 수 있습니다. 즉, URL로 자..