목록Spring/(김영한님)HTTP웹 기본 지식 (16)
개발일기
2xx (Successfult) 클라이언트의 요청을 성공적으로 처리 200 OK 201 Created 202 Accepted 204 No Content 200 OK 요청 성공 요청 ==================================================== GET /members/100 HTTP/1.1 Host: localhost:8080 ==================================================== 응답 ===================================================== HTTP/1.1 200 OK Content-Type: application/json Content-Length : 34 { "username" : "youn..
HTTP API - 컬렉션 POST 기반 등록 예) 회원 관리 API 제공 HTTP API - 스토어 PUT 기반 등록 예) 정적 컨텐츠 관리, 원격 파일 관리 HTML FORM 사용 웹 페이지 회원 관리 GET, POST만 지원 HTTP API를 통해서 데이터를 등록하는데 API를 어떻게 써야하는지 알아야 한다. 첫번째 POST기반으로 데이터를 등록하는 기능 여기서 우리는 POST도 DATA를 등록할 때 사용할 수 있고, PUT도 데이터를 등록할 때 사용할 수 있다는 것을 배웠다. 이 두개를 활용할 때 약간 다른 특징이 있다. 회원 관리 시스템 API 설계 - POST 기반 등록 회원 목록 /members -> GET 회원 등록 /members -> POST 회원 조회 /members/{id} -> G..
클라이언트에서 서버로 데이터 전송 HTTP API 설계 예시 클라이언트에서 서버로 데이터 전송(데이터 전달 방식은 크게 2가지) 쿼리 파라미터를 통한 데이터 전송 GET 주로 정렬 필터(검색어) URI의 끝에 파라미터를 붙여서 보내는 방식 이 방식은 주로 GET방식에서 많이 사용함. 주로 검색어를 칠때 게시판 리스트에 정렬 조건을 넣을 때 쿼리파라미터를 많이넣음. 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 클라이언트에서 서버로 데이터 전송 (4가지 상황) 정적 데이터 조회 이미지, 정적 텍스트 문서 동적 데이터 조회 주로 검색, 게시판 목록에서 정렬 필터(검색어) HTML Form을 통한 데이터 전송 회원 가입, 상품 주문, 데이터 ..
안전(Safe Methods) 멱등(Idempotent Methods) 캐시가능(Cacheable Methods) HTTP 메소드 RFC 요청에 Body가 있음 응답에 Body가 있음 안전 멱등 캐시가능 GET RFC7231 아니오 예 예 예 예 HEAD RFC7231 아니오 아니오 예 예 예 POST RFC7231 예 예 아니오 아니오 예 PUT RFC7231 예 예 아니오 예 아니오 DELETE RFC7231 아니오 예 아니오 예 아니오 CONNECT RFC7231 예 예 아니오 아니오 아니오 OPTIONS RFC7231 선택 사항 예 예 예 아니오 TRACE RFC7231 아니오 예 예 예 아니오 PATCH RFC5789 예 예 아니오 아니오 예 안전 Safe 호출해도 리소스를 변경하지 않는다. Q..
PUT 리소스를 대체 리소스가 있으면 대체 (완전하게 대체함) 리소스가 없으면 생성 쉽게 이야기해서 덮어버림 중요! 클라이언트가 리소스를 식별 클라이언트가 리소스 위치를 알고 URI 지정 POST와 차이점 폴더의 파일을 복사하는 원리와 똑같다보면 됨. 폴더에 파일이 없으면 넣어주고 폴더에 파일이 있으면 지우고 덮어씌우는 원리 PUT 리소스가 있는 경우1 ======================================= PUT /members/100 HTTP/1.1 Content-Type: application/json { "username" : "hello", "age" : 50 } ========================================= 클라이언트가 구체적인 전체적인 위치 경로를..
HTTP 메서드는 클라이언트가 서버에 요청을 할 때, 기대를 하는 행동이다. HTTP 메서드 종류 (주요 메서드) - GET : 리소스 조회 - POST : 요청 데이터 처리, 주로 등록에 사용 (POST는 무조건 데이터를 담아서 클라이언트가 서버에 보내야함, 요청 데이터를 줄테니 니가 등록을 해줘 하는게 POST) - PUT : 리소스를 대체, 해당 리소스가 없으면 생성 (클라이언트가 서버로 리소스를 보내는데 , 이 리소스로 대체해달라고 하는게 PUT) 파일에 폴더를 넣는 행위와 같음 - PATCH : 리소스 부분 변경 (ex - 예를 들어 회원의 이름을 바꾸거나 특정 필드를 몇개 바꿀 때, 사용하는 것) - DELETE : 리소스 삭제 HTTP 메서드 종류 기타 메서드 HEAD : GET과 동일하지만..
- HTTP API를 만들어보자 - HTTP 메서드 - GET, POST - HTTP 메서드 - PUT, PATCH, DELETE - HTTP 메서드의 속성 요구 사항 회원 정보 관리 API를 만들어라. - 회원 목록 조회 - 회원 조회 - 회원 등록 - 회원 수정 - 회원 삭제 API URI 설계 URI(Uniform Resource Identifier) - 회원 목록 조회 /read-member-list - 회원 조회 /read-member-by-id - 회원 등록 /create-member - 회원 수정 /update-member - 회원 삭제 /delete-member 이것은 좋은 URI 설계일까? 가장 중요한 것은 리소스 식별 리소스의 의미는 뭘까? 회원을 등록하고 수정하고 조회하는게 리소스가 ..
무상태 프로토콜 스테이스리스(Stateless) - 서버가 클라이언트의 상태를 보존 X - 장점: 서버 확장성 높음(스케일 아웃) - 단점: 클라이언트가 추가 데이터 전송 HTTP의 중요한 점중에 하나는 HTTP는 무상태 프로토콜을 지향한다. 서버가 클라이언트의 상태를 보존하지 않음. Stateful, Stateless 차이 상태 유지 - Stateful - 고객 : 이 노트북 얼마인가요? - 점원 : 100만원입니다. (노트북 상태 유지) 클라이언트가 노트북을 구매하려는 상태 유지 - 고객: 2개 구매하겠습니다. - 점원 : 200만원입니다. 신용카드,현금중에 어떤 걸로 구매하시겠어요? (노트북, 2개 상태 유지) 이 고객을 노트북을 구매하고 싶은 것을 알고, 2개라고 하면 200만원이 됨. - 고객 ..