CS/네트워크

REST

leah-only 2025. 2. 25. 13:22

REST 란?

REST는 HTTL URI를 통해 자원을 명시하고 HTTP Method를 통해 자원을 처리하도록 설계된 아키텍처

이러한 REST를 기반으로 만든 API를 REST API라고 부름 


REST 구성 요소

  • 자원 (Resource ) : HTTP URI
  • 자원에 대한 행위(Verb) : HTTP Method
  • 자원에 대한 행위의 내용 : HTTP Message Pay Load

HTTP Method (CRUD Operation)

HTTP Method는 클라이언트가 서버에게 사용자의 요청의 목적을 알리는 '수단'

  • GET : 데이터 조회 
  • POST : 데이터 생성 / 요청한 데이터 처리 
  • PUT : 데이터 수정 (요청된 자원이 없으면 생성, 새 것으로 전체 갱신)
  • PATCH : 데이터 수정 (자원의 일부분만 수정)
  • DELETE : 데이터 삭제 

 

GET 과 POST의 차이 

처리방식 GET POST
URL에 데이터 노출 여부 O X
URL 예시 http://localhost:8080/boardList?name=제목 http://localhost:8080/addBoard
데이터의 위치 Header(헤더) Body(바디)
캐싱 가능 여부 O X

REST 특징

  • 클라이언트-서버 구조
  • 상태 없음 (Stateless) : 서버는 클라이언트의 상태를 저장하지 X
  • 인터페이스 일관

REST 장점

  • 서버와 클라이언트 역할이 명확히 분리
  • REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악 가능

REST 단점

  • HTTP Method가 제한적

API (Application Programming Interface)
다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙

 

REST API 설계 

1. URI는 명사, 소문자를 사용

Bad  -> http://leah.com/Study
Good -> http://leah.com/study

 

2. 마지막에 슬래시(/) 포함 X

Bad  -> http://leah.com/study/
Good -> http://leah.com/study

 

3. 언더바(_) 대신 하이폰(-) 사용

Bad  -> http://leah.com/study_blog
Good -> http://leah.com/study-blog

 

4. 행위를 포함하지 X

Bad  -> http://leah.com/delete-board/1
Good -> http://leah.com/board/1

 

REST API URL과 일반적인 HTTP URL 차이 

일반적인 HTTP URL

  • 기능에 중점을 두어 설계
  • /getUser (사용자 정보 조회)
  • /updateUser (사용자 정보 수정)

Restful API

  • 자원을 중점에 두고 설계
  • /user 하위에 기능을 HTTP 메소드를 사용해 구분
    • GET /user : 사용자 목록 조회
    • GET /user/{id} : 특정 사용자 정보 조회
    • POST /user : 사용자 생성

URI (Uniform Resource Identifier)

특정 자원을 식별하는 고유한 문자열 (식별자)

URI는 URL(Uniform Resouce Locator)의 상위 개념 

 

URL (Uniform Resource Locator)

URI의 하위 개념으로 자원의 위치를 명시적으로 나타냄 (위치)

일반적으로 웹 주소를 나타내는 데 사용 

 

URL이자 URI

http://www.example.com/images/photo.jpg

 

www.example.com  서버의 '/iamges/photo.jpg' 경로에 있는 'photo.jpg'라는 이미지 파일의 위치를 명시적으로 나타내기 때문에 URL / 동시에 이 주소는 해당 이미지 파일을 고유하게 실별하므로 URI 이기도 함. 

 

https://example.com/user/123

 

example.com 서버의 '/user/123' 경로에 있는 특정 사용자 정보를 표시하고 있기 때문에 URL

동시에 이 주소는 해당 사용자 정보를 고유하게 식별하므로 URI 이기도 함.

URI 이지만 URL은 아님

urn:isbn:9780486275577

 

ISBN(국제표준도서번호)을 사용하여 특정 책을 고유하게 실별하기 때문에 URI

but, 이 URI는 책의 위치를 나타내지 않으므로 URL은 아니다. 

즉, 이 번호만으로 인터넷이나 특정 위치에서 책을 찾을 수 없다. 

 

 


RESTful 하다

RESTful은 REST를 따르는 웹 서비스 구현 방식

RESTful 웹 서비스는 REST API의 설계 규칙을 올바르게 지킨 시스템


HTTP 상태 코드 (HTTP Status Code)

1xx : 정보 제공

 

2xx : 성공

  • 200(Success) : 요청 성공적으로 처리
  • 201(Created) : POST 메서드 성공 응답
  • 204(No Content) : 요청 성공적으로 처리 but 응답 본문에 데이터를 포함하지 않음을 나타냄

3xx : 리다이렉션 / 요청을 처리하기 위해 추가적인 조치 필요

 

4xx : 클라이언트 오류

  • 400(Bad Request)  : 클라이언트의 잘못된 문법으로 서버가 이해하지 못한 경우
  • 401(Unauthorized) : 요청을 위한 인증이 필요하는 상태 코드
  • 403(Forbidden) : 인증은 처리되었으나 접근 권한이 없음 
  • 404(Not Found) : 요청한 리소스 찾을 수 없음 

5xx : 서버 에러 

  • 500(Internal Server Error) : 서버 내부에서 오류 발생

CS 로드맵 : https://github.com/devSquad-study/2023-CS-Study

cs 질문 참고 : https://eunsun-zizone-zzang.tistory.com/35

'CS > 네트워크' 카테고리의 다른 글

Cookie & Session  (0) 2025.02.27
SOAP(Simple Object Access Protocol)  (0) 2025.02.27
HTTPS  (0) 2025.02.24
HTTP 진화과정  (0) 2025.02.21
로드밸런서  (0) 2025.02.20