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 |