분류 전체보기 1341

Ch06. HTTP 상태코드 - HTTP 상태코드 소개

클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx (Informational): 요청이 수신되어 처리 중 2xx (Successful): 요청 정상 처리 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 4xx (Client Error): 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 클라이언트가 인식할 수 없는 상태코드를 서버가 반환하면? 클라이언트는 상위 상태코드로 해석해서 처리 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경하지 않아도 됨 EX) 299 ??? -> 2xx (Successful) 451 ??? -> 4xx (Client Error) 59..

Ch05. HTTP 메서드 활용 - HTTP API 설계 예시

3가지 API 설계 예시 HTTP API - 컬렉션 POST 기반 등록 예) 회원 관리 API 제공 HTTP API - 스토어 PUT 기반 등록 예) 정적 콘텐츠 관리, 원격 파일 관리 HTML FORM 사용 웹 페이지 회원 관리 GET, POST만 지원 회원 관리 시스템 회원 목록 /members -> GET 회원 등록 /members -> POST 회원 조회 /members/{id} -> GET 회원 수정 /members/{id} -> PATCH, PUT, POST 회원 삭제 /members/{id} -> DELETE POST - 신규 자원 등록 특징 클라이언트는 등록될 리소스의 URI를 모른다.( 서버가 결정하는 것이지 클라이언트가 결정하는 것이 아니다) 회원 등록 /members -> POST P..

Ch05. HTTP 메서드 활용 - 클라이언트에서 서버로 데이터 전송

데이터 전달 방식은 크게 2가지 쿼리 파라미터를 통한 데이터 전송 GET 주로 정렬 필터(검색어) 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 정적 데이터 조회 이미지, 정적 텍스트 문서 쿼리 파라미터 미사용 이미지, 정적 텍스트 문서 조회는 GET 사용 정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능 동적 데이터 조회 주로 검색, 게시판 목록에서 정렬 필터(검색어) 쿼리 파라미터 사용 주로 검색, 게시판 목록에서 정렬 필터(검색어) 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용 조회는 GET 사용 GET은 쿼리 파라미터 사용해서 데이터를 전달 HTML Form을 통한 데이터 전..

Ch04. HTTP 메서드 - HTTP 메서드의 속성

안전(Safe Methods) 멱등(Idempotent Methods) 캐시 가능(Cacheable Methods) 안전 호출해도 리소스를 변경하지 않는다. Q: 그래도 계속 호출해서, 로그 같은 게 쌓여서 장애가 발생하면요? A: 안전은 해당 리소스의 변경만 고려한다. 그런 부분까지 고려하지 않는다 멱등 f(f(x)) = f(x) 한 번 호출하든 두 번 호출하든 100번 호출하든 결과가 똑같다. 멱등 메서드 GET: 한 번 조회하든, 두 번 조회하든 같은 결과가 조회된다. PUT: 결과를 대체한다. 따라서 같은 요청을 여러 번 해도 최종 결과는 같다. DELETE: 결과를 삭제한다. 같은 요청을 여러 번 해도 삭제된 결과는 똑같다. POST: 멱등이 아니다! 두 번 호출하면 같은 결제가 중복해서 발생할..

Ch04. HTTP 메서드 - HTTP 메서드 - PUT, PATCH, DELETE

PUT 리소스를 대체 리소스가 있으면 대체 리소스가 없으면 생성 쉽게 이야기해서 덮어버림 중요! 클라이언트가 리소스를 식별 클라이언트가 리소스 위치를 알고 URI 지정 POST와 차이점 주의 : 리소스를 완전히 대체한다. ​PATCH 리소스 부분 변경 POST을 단점을 해결하였다. 만약 PATCH를 지원하지 않을 경우 POST를 사용하면 된다 DELETE 리소스 삭제

Ch04. HTTP 메서드 - HTTP 메서드 - GET, POST

HTTP 메서드 종류 GET: 리소스 조회 POST: 요청 데이터 처리, 주로 등록에 사용 PUT: 리소스를 대체, 해당 리소스가 없으면 생성 PATCH: 리소스 부분 변경 DELETE: 리소스 삭제 기타 메서드 HEAD: GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환 OPTIONS: 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용) CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정 TRACE: 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행 GET 리소스 조회 서버에 전달하고 싶은 데이터는 query(쿼리 파라미터, 쿼리 스트링)를 통해서 전달 메시지 바디를 사용해서 데이터를 전달할 수 있지만, 지원하지 않는 곳이 많아서 권장하..

Ch04. HTTP 메서드 - HTTP API를 만들어보자

요구사항 회원 정보 관리 API를 만들어라. 회원 목록 조회 /read-member-list 회원 조회 /read-member-by-id 회원 등록 /create-member 회원 수정 /update-member 회원 삭제 /delete-member 이것은 좋은 URI 설계일까? URI는 리소스 식별이 가장 중요하다. 리소스의 의미는 뭘까? 회원을 등록하고 수정하고 조회하는 게 리소스가 아니다! 예) 미네랄을 캐라 -> 미네랄이 리소스 회원이라는 개념 자체가 바로 리소스다. 리소스를 어떻게 식별하는게 좋을까? 회원을 등록하고 수정하고 조회하는 것을 모두 배제 회원이라는 리소스만 식별하면 된다. -> 회원 리소스를 URI에 매핑 리소스 식별, URI 계층 구조 활용 회원 목록 조회 /members 회원 조..

Ch03. HTTP 기본 - HTTP 메시지

HTTP 요청 메시지 HTTP 응답 메시지 시작 라인(요청 메시지) start-line = request-line / status-line request-line = method SP(공백) request-target SP HTTP-version CRLF(엔터) HTTP 메서드 (GET: 조회) 종류 : GET, POST, PUT, DELETE 서버가 수행해야 할 동작 지정 GET : 리소스 조회 POST : 요청 내역 처리 요청 대상 (/search? q=hello&hl=ko) absolute-path [? query] (절대 경로[? 쿼리]) 절대경로= "/"로 시작하는 경로 참고: *, http://...?x=y 와 같이 다른 유형의 경로지정 방법도 있다. HTTP Version 시작 라인 (응답 ..

Ch03. HTTP 기본 - 비 연결성(connectionless)

연결을 유지하는 모델 연결을 유지하지 않는 모델 서버는 자원을 받을때만 연결이 되기 때문에 최소한의 자원만 사용할 수가 있다. 비연결성 HTTP는 기본이 연결을 유지하지 않는 모델 일반적으로 초 단위의 이하의 빠른 속도로 응답 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십 개 이 하로 매우 작음 예) 웹 브라우저에서 계속 연속해서 검색 버튼을 누르지는 않는다. 서버 자원을 매우 효율적으로 사용할 수 있음 한계와 극복 TCP/IP 연결을 새로 맺어야 함 - 3 way handshake 시간 추가 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트, css, 추가 이미지 등 등 수많은 자원이 함께 다운로드 지금은 HTTP 지속 연결(Persistent Con..

Ch03. HTTP 기본 - 무상태 프로토콜

서버가 클라이언트의 상태를 보존 X 장점: 서버 확장성 높음(스케일 아웃) 단점: 클라이언트가 추가 데이터 전송 Stateful, Stateless 차이 stateful 고객: 이 노트북 얼마인가요? 점원: 100만 원입니다. (노트북 상태 유지) 고객: 2개 구매하겠습니다. 점원: 200만 원 입니다. 신용카드, 현금중에 어떤 걸로 구매 하시겠어요? (노트북, 2개 상태 유지) 고객: 신용카드로 구매하겠습니다. 점원: 200만원 결제 완료되었습니다. (노트북, 2개, 신용카드 상태 유지) stateless 고객: 이 노트북 얼마인가요? 점원: 100만 원입니다. 고객: 노트북 2개 구매하겠습니다. 점원: 노트북 2개는 200만 원 입니다. 신용카드, 현금중에 어떤 걸로 구매 하시겠어요? 고객: 노트북 ..