### Request - Http 요청의 핵심요소에 대해서 알아봅시다. #### method GET 은 언제 어떻게 사용하나요? - 요청한 데이터 받기 - 데이터 조회할 때 사용한다 - URL에 데이터가 표시 - 한번 접근 후, 또 요청할 시 빠르게 접근하기 위해 데이터를 저장시켜 놓기 때문에 POST보다 빠름 - 1024 바이트 이상 전송할 수 없다 https://xengom.com/restapi/post-put-patch/ POST 는 언제 어떻게 사용하나요? - 데이터 보내기 - 식별자(Identifier) 없이 Data가 들어오면 새 식별자를 생성하고 데이터를 생성(등록)할 때 사용한다 - 메시지 Body에 데이터 담아서 보낸다 - 예) 중복 허용하는 경우, 새 것 추가 PUT 은 언제 어떻게 사용하나요? - Data가 들어왔을 때 식별자가 존재하면 해당 리소스를 업데이트(Replace)한다. -> Idempotent - Data가 들어왔을 때 식별자가 존재하지 않으면 새 식별자를 생성하고 Data를 등록한다. - 예) 유일하게 한 데이터만 있도록(중복 없이) PATCH 는 언제 어떻게 사용하나요? - PATCH는 POST와 PUT을 섞음 - Data가 들어왔을 때 식별자가 존재하면 해당 리소스를 업데이트(부분 update)한다. - Data가 들어왔을 때 식별자가 존재하지 않으면 Exception이 터진다. - 예) 데이터가 확실히 있을 때 업데이트 하려는 경우 DELETE 는 언제 어떻게 사용하나요? - 삭제 --- 위의 질문들을 올바르게 살펴봤다면, 아래의 내용들이 무엇인지 설명할 수 있습니다. ![](https://i.imgur.com/ibRL9kS.png) request-query: Query String으로 서버에게 요청하는 것 `/users?id=123` cf. 다른 방식은 Path value `/users/123` request-body(payload): 보내고자 하는 데이터 자체 header: HTTP 헤더는 클라이언트와 서버가 요청 또는 응답으로 부가적인 정보를 전송할 수 있도록 해준다. * Content-Type 은 무엇인가요? 클라이언트에서 서버에게 요청에서 데이터의 형식 * 파일을 전송할때 주로 사용되는 Content-Type 은 무엇인가요? MIME 타입 --- ### Response - HTTP 응답의 핵심요소에 대해서 알아봅시다. ### HTTP Status * 200, 201 , 202, 204 상태 코드가 각각 무엇을 의미하는지 알아봅시다. https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C 200(성공): 서버가 요청을 제대로 처리했다는 뜻이다. 이는 주로 서버가 요청한 페이지를 제공했다는 의미로 쓰인다. 201(작성됨): 성공적으로 요청되었으며 서버가 새 리소스를 작성했다. 202(허용됨): 서버가 요청을 접수했지만 아직 처리하지 않았다. 203(신뢰할 수 없는 정보): 서버가 요청을 성공적으로 처리했지만 다른 소스에서 수신된 정보를 제공하고 있다. 204(콘텐츠 없음): 서버가 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않는다. * 400 , 401 , 403 , 404 , 406 상태 코드가 각각 무엇을 의미하는지 알아봅시다. 400 Bad Request 요청 실패. 문법상 오류가 있어서 서버가 요청사항을 이해하지 못함, 401(권한 없음): 이 요청은 인증이 필요하다. 서버는 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있다. 상태 코드 이름이 권한 없음(Unauthorized)으로 되어 있지만 실제 뜻은 인증 안됨(Unauthenticated)에 더 가깝다.[2] 402(결제 필요): 이 요청은 결제가 필요합니다. 403(Forbidden, 금지됨): 서버가 요청을 거부하고 있다. 예를 들자면, 사용자가 리소스에 대한 필요 권한을 갖고 있지 않다. (401은 인증 실패, 403은 인가 실패라고 볼 수 있음) 404 Not Found 문서를 찾을 수 없음. 서버가 요 청한 파일이나 스크립트를 찾지 못함. 406 Not Acceptable 받아들일 수 없음 * 500 , 502 , 504 상태 코드가 각각 무엇을 의미하는지 알아봅시다. 500 Internal Server Error 서버 내부 오류 502 Bad gateway 게이트웨이 상태 나쁨 504 Gateway timeout 프록시나 게이트웨이의 역할을 하는 서버에서 볼 수 있음. 초기 서버가 원격 서버로부터 응답을 받을 수 없음. (HTTP 1.1에서 새로 등장) --- 위의 질문들을 올바르게 살펴봤다면, 아래의 내용들이 무엇인지 설명할 수 있습니다. 가장 기본적인 성공 요청 응답의 status 코드는 무엇일까요? * 200 인증 또는 권한등의 오류에 대해서 주로 사용되는 status 코드는 무엇일까요? * 401 잘못된 접근, 존재하지 않는 경로에 대한 접근에 주로사용되는 status 코드는 무엇일까요? * 404 서버측 오류에 대해서 주로 사용되는 status 코드는 무엇일까요? * 500 --- status 를 통해서 얻을수 있는 이점은 무엇일까요? * 5개의 클래스(분류)로 구분되어 요청에 대한 결과 확인 용이, 오류 해결이 편하다. * 1xx (정보): 요청을 받았으며 프로세스를 계속한다 * 2xx (성공): 요청을 성공적으로 받았으며 인식했고 수용하였다 * 3xx (리다이렉션): 요청 완료를 위해 추가 작업 조치가 필요하다 * 4xx (클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다 * 5xx (서버 오류): 서버가 명백히 유효한 요청에 대해 충족을 실패했다 URL / URI URL 과 URI에 대해서 알아봅시다. ![](https://i.imgur.com/gvORgxP.png) > URI는 식별하고, URL은 위치를 가르킨다.