RESTful API와 HTTP

김선은·2023년 11월 3일

프론트엔드 지식

목록 보기
1/1

fetch와 axios 차이를 알아보다가 RESTful API와 HTTP까지 알아보게 되고 다음에 또 찾아볼 것 같아서 정리하는 게시물.

REST

간단하게 REST를 알아보자면 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이고 자원을 이름으로 구분해서 자원의 상태(정보)를 주고 받는 모든 것을 의미.
자원은 해당 소프트웨어가 관리하는 모든 것으로 문서, 그림, 데이터 등이 있다. Client는 URL을 이용해서 자원을 지정하고 자원의 상태의 조작을 Server에 요청!

REST의 특징을 간단 정리.

Server-Client 구조

자원이 있는 쪽이 서버, 자원을 요청하는 쪽이 클라이언트.
서버는 API을 제공하고, 비즈니스 로직 처리 및 저장을 책임.
클라이언트는 사용자 인증, context(세션, 로그인 정보)등을 관리.

Stateless (무상태)

HTTP : 클라이언트와 서버 간 통신을 위한 규칙
HTTP는 무상태 프로토콜. REST도 그렇다. 서버가 클라이언트의 상태를 보존하지 않는다는 의미.
서버는 각각의 요청을 완전히 별개의 것으로 인식하고 처리.
클라이언트의 context를 서버에 저장하지 않음.
나머지는 이해가 안되서 이만 생략하고 나중에 다시 읽어보자.
REST 참고한 블로그

API, RESTful API

API란?

  • 데이터와 기능의 집합을 제공해서 서로 정보를 교환가능 하도록 하는 것

RESTful API

  • REST 기반으로 서비스 API를 구현한 것.
  • RESTful API의 근본적인 목적은 일관적인 컨벤션으로 API의 이해도와 호환성을 높이는 것이다. 성능 향상의 목적이 아님.
  • RESTful 하지 못한 경우는 CRUD 기능을 모두 POST로만 처리하는 API라고 볼 수 있다. 추가로 route에 resource, id 외의 정보가 들어가는 경우.

API에서 사용할 데이터 포맷은 대부분 JSON 또는 XML을 사용한다. 데이터 포맷은 클아이언트와 서버 간의 통신을 위한 표준으로 사용된다.
HTTP 응답 상태 코드를 사용해서 요청의 성공 또는 실패를 나타내고 일반적으로 2XX 시리즈 코드는 성공을, 4XX와 5XX 시리즈 코드는 실패를 나타낸다.
RESTful 원칙을 준수한다는 것은 API 설계, HTTP 메서드 선택 등의 원칙을 따르는 것을 의미한다.

asw의 API 안내

HTTP 메서드

주요 5가지 메서드

  • GET : 리소스 조회. GET 메서드는 데이터를 가져올때만 사용. 서버에 전달하고 싶은 데이터는 query를 통해서 전달하는 편.
  • POST : 서버로 데이터를 전송한다. 새로운 리소스를 생성(등록)할 때 주로 사용.
  • PUT : 요청 데이터를 사용하여 대상 리소스가 있다면 데이터를 대체하고 없다면 새로운 리소스를 생성. (데이터 덮어쓰기)
  • PATCH : 리소스를 부분적으로 변경할 수 있다.
  • DELETE : 리소스 삭제.

메서드 속성

  • 안전 (Safe)
  • 멱등 (Idempotent)
  • 캐시 가능 (Cacheable)

안전은 호출해도 리소스를 변경하지 않는 메서드 속성.
GET 메서드는 단순히 데이터를 가져올 때 사용하니 GET은 안전한 메서드이다.

멱등은 몇 번을 호출하든 최종적인 결과가 똑같은 메서드 속성.
GET(데이터 가져오기), DELETE(삭제하기), PUT(대체하기) 작업은 몇 번이 수행 되건 결과는 같다. 그러나 POST는 여러 번 호출 된다면 결과가 중복해서 발생할 수 있다. 게시물 등록이 여러개 되거나, 결제가 중복되거나.
POST 메서드는 멱등하지 않다.

캐시는 응답 결과 리소르를 캐시해서 사용해도 되는지에 대한 속성.
GET, HEAD, POST, PATCH 메소드가 이 속성을 가진다. 일반적으로 GET과 HEAD 정도만 캐시로 사용한다.

메서드 요청/응답에 Body 존재

데이터를 Message Body에 담아 보내는 여부의 표.

메서드들의 자세한 설명 참고할 블로그
HTTP 메서드 정리

HTTP 클라이언트

RESTful API을 호출하고 데이터를 가져와 프론트엔드 애플리케이션에 통합할 때 가장 일반적인 방법은 fetch() 함수의 사용이 있다.

HTTP? HTTPS?

HTTP

월드 와이드 웹에서 데이터를 전송하는데 사용되는 프로토콜
클라이언트와 서버가 데이터를 주고 받는것은 HTTP 프로토콜 덕분.
HTTP는 요청/응답 형태로 데이터를 전송하는 프로토콜이다. 거의 모든 형태의 데이터를 HTTP body에 담아서 보낸다.

HTTP 특징

  1. 무상태성
    프로토콜이므로 서버가 클라이언트의 상태를 보존하지 않는다. 따라서 매 요청에 첫 응답인 것 처럼 동작함. 이 특징의 장점은 스케일 아웃에 유리하다는 것. (서버를 수평적으로 늘려 서버의 부하를 줄이는 방법)

  2. 요청과 응답
    HTTP는 클라이언트 서버 구조이다. 요청과 응답 구조로 동작하고 클라이언트는 요청하고 서버의 응답을 대기한다. 요청은 HTTP 메서드와 헤더, 본문으로 구성.

  3. 텍스트 기반 프로토콜
    HTTP 요청 및 응답은 텍스트로 구성되며, 이해하기 쉽다. 이 특징은 디버깅 및 트래킹을 용이하다.

  4. 비연결성
    통신이 있을때만 연결하고 응답으로 데이터를 보내고 나면 연결을 종료한다. 사용자가 수천명이어도 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작아져서 서버 자원을 효율적으로 사용할 수 있다.
    HTTP 특징

  5. 기본 인증
    HTTP는 기본 인증을 제공해 사용자의 이름과 암호를 사용해서 서버에 접근할 수 있다. 그러나 이 방식은 보안에 취약해 HTTPS와 같은 보안 레이어가 필요함

HTTPS 특징 (secure)

  1. 보안
    HTTP는 텍스트 기반의 프로토콜으로 데이터를 평문으로 전송해 보안 취약점이 있다.
    HTTPS는 보안 소켓 레이어(SSL 또는 TLS)위에 HTTP를 레이어드한다. 데이터를 암호화하고 데이터의 변조를 방지한다.
    SSL은 보안소켓, TLS는 전송 계층 보안

  2. 데이터 무결성
    HTTP와 달리 HTTPS는 데이터 무결성을 보장하며 데이터가 중간에 변경되거나 손상될 때 경고를 발생한다.

  3. 신원 인증
    HTTPS는 인증된 인증 기관에 의해 서명된 SSL/TLS 인증서를 사용하여 웹 사이트의 신원을 확인한다. 중간자 공격을 방지할 수 있다.

  4. 검색 엔진 최적화
    구글 같은 경우는 HTTPS를 사용하는 웹사이트에 더 높은 점수로 평가한다.

웹사이트에서 개인 정보를 수집하거나 민감한 데이터를 처리하는 경우는 HTTPS를 사용하는 것이 중요하다.

profile
기록은 기억이 된다

0개의 댓글