본문 바로가기

Infrastructure

(251)
[HTTP] 상태 코드 (2xx) 2xx (Successful) 상태 코드에 대해서 알아본다. 클라이언트의 요청을 성공적으로 처리했다는 뜻으로 아래와 같이 대표적으로 사용되는 코드들이 있다. 200 OK 201 Created 202 Accepted 204 No Content 200 OK (요청 성공) 요청 GET /cars/100 HTTP/1.1 Host: localhost:8080 응답 HTTP/1.1 200 OK Content-Type: application/json Content-Length: 34 { "manufacturer": "hyundai", "modelName": "sonata" } 201 Created (요청 성공해서 새로운 리소스가 생성됨) 요청 POST /cars HTTP/1.1 Content-Type: applica..
[HTTP] 상태 코드 (종류) 전반적인 HTTP 상태 코드의 종류를 간략하게 알아본다. 상태 코드: 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주기 위한 코드 1xx (Informational): 요청을 받았으며 프로세스를 계속한다. 2xx (Successful): 요청을 성공적으로 받았으며 인식했고 수용하였다. 3xx (Redirection): 요청 완료를 위해 추가 작업 조치가 필요하다. 4xx (Client Error): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다. 5xx (Server Error): 서버가 명백히 유효한 요청에 대해 충족을 실패했다. 만약 클라이언트에서 모르는 상태 코드가 나타나면 어떻게 해야할까? 현실적으로 클라이언트가 모든 상태 코드를 처리하기는 힘들다. 글을 쓰는 시점의 4xx 상태 코드의 ..
[HTTP] API 설계 예시 좋은 HTTP API 설계에 대해서 알아본다. HTTP API - 컬렉션 POST 기반 등록(회원 관리 API 등) HTTP API - 스토어 PUT 기반 등록(정적 컨텐츠 관리, 원격 파일 관리) HTML FORM 사용 웹 페이지 회원 관리(GET, POST만 지원) 차량 관리 시스템 아래는 차량 관리 시스템의 API 설계다. (POST 기반 등록) 차량 목록 /cars -> GET 차량 등록 /cars -> POST 차량 조회 /cars/{id} -> GET 차량 수정 /cars/{id} -> PATCH, PUT, POST 차량 삭제 /cars/{id} -> DELETE POST 기반의 신규 자원(resource)은 다음과 같은 특징을 가진다. 클라이언트는 등록될 리소스의 URI를 모른다. 서버가 새..
[HTTP] 메서드 - 4 (활용) HTTP 메서드의 활용 방법에 대해서 알아본다. 클라이언트에서 서버로 데이터를 전송하는 방식은 크게 두 가지가 있다. 쿼리 파라미터를 통한 데이터 전송 GET 주로 검색 필터(검색어) 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 클라이언트에서 서버로 데이터를 전송하는 상황은 크게 네 가지가 있다. 정적 데이터 조회 이미지, 정적 텍스트 문서 GET을 사용 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 동적 데이터 조회 검색, 게시판 목록에서 검색 필터(검색어) 쿼리 파라미터 사용 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정룔 조건에 주로 사용 HTML Form을 통한 데이터 전송 회원 가입, 상품 주문, 데이터 변..
[HTTP] 메서드 - 3 (속성) HTTP 메서드의 속성에 대해서 자세하게 알아본다.* 안전 (Safe Methods) 호출해도 리소스의 상태 변경하지 않는다. 리소스의 상태를 제외한 부분에 대한 안전은 고려하지 않는다. 멱등 (idempotent) f(f(fx)) = f(x) 몇 번이 호출되더라도 항상 같은 결과를 반환한다. 멱등 속성을 가지는 메서드 GET: 한 번 조회하든, 두 번 조회하든 같은 결과가 조회된다. PUT: 수정되는 결과는 요청 데이터에 따라 결정된다. 따라서 같은 요청을 여러번 해도 최종 결과는 같다. DELETE: 결과를 삭제한다. 같은 요청을 여러번 하더라도 삭제된 결과는 똑같다. 멱등 활용 자동 복구 메커니즘 서버에서 TIMEOUT 등으로 정상 응답을 주지 못했을 때, 클라이언트가 같은 요청을 다시 해도 되는가..
[HTTP] 메서드 - 2 (종류) HTTP 메소드의 종류와 역할을 알아본다. 아래는 주요 메서드 목록과 간략한 설명이다. GET: 리소스 조회 POST: 요청 데이터 처리, 주로 등록에 사용 PUT: 리소스를 대체, 해당 리소스가 없으면 생성 PATCH: 리소스 부분 변경 DELETE: 리소스 삭제 아래는 기타 메서드 목록과 간략한 설명이다. 기타 메서드들에 대해서는 간략하게만 알아보고 넘어간다. HEAD: GET과 동일 하지만 메시지 부분을 제외하고 샹태 줄과 헤더만 반환 OPTIONS: 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용) CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정 TRACE: 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행 주요 메서드들에 대해서 하나씩 자세하..
[HTTP] 메서드 - 1 (API URI 설계) 좋은 API URL 설계에 대해서 알아본다. 먼저 Car라는 리소스에 대해서 URL을 설계해보자. 회원 목록 조회: /read-car-list 회원 조회: /read-car-by-id 회원 등록: /create-car 회원 수정: /update-car 회원 삭제: /delete-car 과연 위의 설계가 좋은 설계일까? 결론은 그렇지않다. 아주 좋지 못한 설계다. 이유는 URL(Uniform Resource Identifier)의 의미를 다시 한 번 생각해보면 알 수 있다. 우리가 집중해야할 것은 car라는 리소스다. create(생성), update(수정)이 아니라는 뜻이다. 그러므로 우리는 URL에 리소스가 아닌 정보를 포함하면 안된다.(물론 100% 사용하지 않고 개발 할 수는 없다.) 그러면 HTT..
[HTTP] 메시지 구조 HTTP 메시지의 구조에 대해서 알아본다. HTTP 메시지 구조는 아래와 같은 규칙을 가진다. start-line 시작 라인 header 헤더 empty line 공백 라인 (CRLF) message body 구체적으로 HTTP 응답 메시지의 구조에 대해서 알아보자. 공식 스펙(https://datatracker.ietf.org/doc/html/rfc7230#section-3)에 나와있는 규칙과 규칙을 따르는 예시다. 공식 스펙 HTTP-message = start-line *( header-field CRLF ) CRLF [ message-body ] 예시 HTTP 요청 메시지 GET /ranking/read?oid=112&aid=0003447803 HTTP/1.1 Host: www.entertain...