티스토리 뷰

개발공부/기술면접 대비

Restful API

chihoya 2023. 3. 28. 23:44

Rest(Representational State Transfer) 

로이 필딩의 2000년 박사학위 논문에서 소개된 용어로 "웹에 존재하는 모든 자원(이미지, 동영상, DB 자원)에 고유한 URI를 부여해 활용"하는 것으로, 자원을 정의하고 자원에 대한 주소를 지정하는 방법론을 의미한다.

즉, REST란

  1. HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
  2. HTTP Method(POST, GET, PUT, DELETE, PATCH 등)을 통해
  3. 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다.

REST 구성요소

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

REST의 특징

  1. Server-Client(서버 - 클라이언트 구조)
  2. Stateless(무상태)
  3. Cacheable(캐시 처리 가능)
  4. Layered System(계층화)
  5. Uniform Interface(인터페이스 일관성)

 

CRUD Operation이란

CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인
Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말로
REST에서의 CRUD Operation 동작 예시는 아래와 같다.
  • Create : 데이터 생성(POST)
  • Read : 데이터 조회(GET)
  • Update : 데이터 수정(PUT, PATCH)
  • Delete : 데이터 삭제(DELETE)

 

REST API 설계 예시

1. URI는 동사보다는 명사를, 대문자보다는 소문자를 사용해야 한다.

BAD Ex) http://chihoya.com/Running/
GOOD Ex) http://chihoya.com/run/

 

2. 마지막에 슬래시(/)를 포함하지 않는다.

BAD Ex) http://chihoya.com/test/
Good Ex) http://chihoya.com/test

 

3. 언더바 대신 하이폰을 사용한다.

BAD Ex) http://chihoya.com/test_blog
Good Ex) http://chihoya.com/test-blog

 

4. 파일확장자는 URI에 포함하지 않는다.

BAD Ex) http://chihoya.com/photo.jpg
GOOD Ex) http://chihoya.com/photo

 

5. 행위를 포함하지 않는다.

BAD Ex) http://chihoya.com/delete-post/1
GOOD Ex) http://chihoya.com/post/1

 

RESTful API

REST 특징을 잘 지켜 설계된 API를 의미한다.

HTTP 통신에서 어떤 자원에 대한 CRUD(Create, Read, Update, Delete) 요청을 Resource와 Method로 표현하여 특정한 형태로 전달할지 정해주는 가이드라인이라고도 할 수 있다.

 

 

 

참고

https://velog.io/@yuni/Network-REST-API-RESTful-API

 

WEB - REST API / RESTful API

REST(Representational State Transfer): 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개된 용어로 "웹에 존재하는 모든 자원(이미지, 동영상, DB 자원)에 고유한 URI를 부여해 활용"하는 것으로, 자원을

velog.io

https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80

'개발공부 > 기술면접 대비' 카테고리의 다른 글

Git과 Github  (0) 2023.04.02
Ajax, Axios란??  (0) 2023.04.02
[JS] 동기, 비동기 처리  (0) 2023.03.28
JWT 토큰??  (0) 2023.03.26
[JS] 깊은복사(deep copy), 얕은복사(shallow copy)  (0) 2023.03.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함