코딩캠프/AI 웹개발 취업캠프

[AI 웹개발 취업캠프] 19Day - 백엔드 HTTP(3), Rest API(1)

고랑E 2023. 8. 10. 17:51
728x90

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 제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 정보) 등을 직접 관리하는 구조

 

계층형 구조

다중 계층으로 구성될 수 있으며, 보안,로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고

네트워트 기반의 중간매체(프록시, 게이트웨이)를 사용할 수 있다

 


참고 링크

 

HTTP 요청 메서드 - HTTP | MDN

HTTP는 요청 메서드를 정의하여, 주어진 리소스에 수행하길 원하는 행동을 나타냅니다. 간혹 요청 메서드를 "HTTP 동사"라고 부르기도 합니다. 각각의 메서드는 서로 다른 의미를 구현하지만, 일부

developer.mozilla.org

 

HTTP 상태 코드 - HTTP | MDN

HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고

developer.mozilla.org

 

 

본 후기는 정보통신산업진흥원(NIPA)에서 주관하는 <AI 서비스완성! AI+웹개발 취업캠프 - 프론트엔드&백엔드> 과정 학습/프로젝트/과제 기록으로 작성되었습니다.