HTTP
HTTP의 메서드(Method)
HTTP는 요청 메서드를 정의하여 주어진 리소스에 수행하길 원하는 행동을 나타내고
안전, 멱등, 캐시 가능의 속성이 있다
안전
서버의 상태를 바꾸지 않는 것
멱등
동일한 요청을 한 번 보내는 것과 여러 번 보내는 것이 같은 것
캐시 가능
응답 결과를 나중에 검색하고 사용하기 위해 서버에 저장
메서드 | 세부 내용 | 멱등 | 안정 | 캐시 |
GET | 리소스를 요청할 때 | ✅ | ✅ | ✅ |
POST | 바디를 통해 서버로 요청 데이터를 전달 | ❌ | ❌ | ✅ |
PUT | 요청에 담겨진 내용에 따라 없으면 새로 생성 또는 대체(덮어쓰기) | ✅ | ❌ | ❌ |
PATCH | 리소스를 일부분 변경 | ❌ | ❌ | ✅ |
DELETE | 특정 리소스를 삭제 | ✅ | ❌ | ❌ |
HEAD | GET과 동일하지만 응답 본문(Body) 를 포함하지 않음 | ✅ | ✅ | ✅ |
OPTIONS | 대상 리소스에 대한 통신을 설정하는 데 사용 | ✅ | ✅ | ❌ |
CONNECT | 대상 리소스로 식별되는 서버로의 터널 설정 | ❌ | ❌ | ❌ |
TRACE | 대상 리소스의 경로를 따라 메시지 루트백 테스트 | ✅ | ✅ | ❌ |
HEAD, OPTIONS, CONNECT, TRACE 는 잘 사용하지 않는 메소드인거 같다.
HTTP의 상태코드(Status Code)
상태코드 | 세부 내용 |
1XX | 요청을 처리하는 상태. 즉 서버에게 요청을 보낸 상태 |
2XX | 200 (OK) : 요청 성공 처리 201(Created) : 새로운 리소스가 생성 204 (No Content) : 새로운 리소스는 생성했으나 제공하지 않을 때 |
3XX | 300번대는 요청에 대한 추가적인 처리가 필요할 경우 사용 (aka. redirect) 301 (moved permanent) 302 (found) 303 (see other) 307(temporary redirect) |
4XX | 400번대는 Client가 잘못 요청한 오류 코드를 나타냄 400 (Bad request) : 서버가 이해를 못함 401 (Unauthorized) : 추가적인 인증이 필요 403 (Forbidden) : Client 자체가 접근권한이 없음 404 (Not Found) : 해당 페이지가 없음 |
5XX | 500번대는 Server가 문제가 생겨 오류가 생긴 상태 500 (Internal Server Error) : 서버가 요청을 처리하다가 오류가 남 501 (Not Implemented) : 서버가 요청한 내용을 처리할 수 있는 기능이 없음 503 (Service Unavailable) : 서버가 Down되어 서버를 현재 사용할 수 없는 상태 |
Rest API
REST (REpresentational State Transfer)
기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에
웹을 위한 아키텍처의 설계와 개발을 안내하기 위해 만들어진 소프트웨어 아키텍처 스타일
구성 요소
자원 (Resource)
자원을 식별할 수 있는 식별자 (ex: URI)
클라이언트는 URI를 이용해 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 서버에 요청한다.
행위(Action)
클라이언트가 어떠한 행위를 수행할지 결정 (ex: HTTP Method)
HTTP 프로토콜은 GET, POST, PUT, PATCH, DELETE의 Method를 제공합니다. ( CRUD )
표현(Representation)
전달되어지는 매개체
데이터를 주고받는 형태로 JSON, XML, TEXT, RSS 등이 있다
특징
Uniform (유니폼 인터페이스)
HTTP 표준만 따르면 어떤 언어나 플랫폼에서 사용해도 사용이 가능한 인터페이스 스타일이다.
특정 언어에 상관없이 사용이 가능하다.
Stateless (무상태)
Rest는 상태 정보를 유지하지 않는다.
서버는 각각의 요청을 완전히 다른 것으로 인식하고 처리를 한다.
Cacheable (캐시가능)
HTTP라는 기존 웹 표준을 그대로 사용하기 때문에 기존 인프라를 그대로 활용이 가능하다.
그래서 HTTP가 가진 캐싱 기능이 적용 가능
Self-descriptiveness (자체 표현 구조)
REST API 메시지만 보고도 쉽게 이해 할 수 있는 자체 표현 구조로 되어있다.
Client-Server 구조
서버는 API 제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 정보) 등을 직접 관리하는 구조
계층형 구조
다중 계층으로 구성될 수 있으며, 보안,로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고
네트워트 기반의 중간매체(프록시, 게이트웨이)를 사용할 수 있다
참고 링크
본 후기는 정보통신산업진흥원(NIPA)에서 주관하는 <AI 서비스완성! AI+웹개발 취업캠프 - 프론트엔드&백엔드> 과정 학습/프로젝트/과제 기록으로 작성되었습니다.
'코딩캠프 > AI 웹개발 취업캠프' 카테고리의 다른 글
[AI 웹개발 취업캠프] 코딩 초보자를 위한 파이썬(Python) 입문(Beginner) (0) | 2023.08.10 |
---|---|
[AI 웹개발 취업캠프] 23.08.10 과제 (0) | 2023.08.10 |
[AI 웹개발 취업캠프] 23.08.09 과제 (0) | 2023.08.10 |
[AI 웹개발 취업캠프] 18Day - 백엔드 HTTP(2) (0) | 2023.08.09 |
[AI 웹개발 취업캠프] 17Day - 백엔드 HTTP(1) (0) | 2023.08.08 |