ultra_dev
REST API 본문
+프로젝트에 REST API를 사용한 이유
: 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론이 가능하기 때문에 사용(소통 및 협업 용이)
REST API 말고 다른 비교할만한 것
:GraphQL, 쿼리를 활용해서 한번의 요청으로 많은 데이터를 가져올 수 있는 방법.
- 장점 : 필요한 최소 정보만 별도 요청이 가능하기에 효율적이고, 엄격하게 정의된 데이터 유형은 클라이언트와 서버 간의 통신 오류를 줄여줌
- 단점 : 고정된 요청과 응답만 필요할 경우에는 Query 로 인해 요청의 크기가 RESTful API 의 경우보다 더 커짐.
File 전송 등 Text만으로 하기 힘든 작업들을 처리하기 복잡
👓정리(X)
두서 없는 글
리소스를 프로그래밍 규약에 맞게 전달 하는것
URI 규약에 맞게 리소스를 정의하고 HTTP메소드에 맞게 가져오거나 바꾸거나 삭제하거나 http 메소드의 액션을취한다~
HTTP메소드를 사용하기 때문에 주로 무상태성 특징 지님, 한번 요청에 대해 기억하지 않음
한번 요청한 것에 대해 캐싱함.
인터페이스가 플랫폼에 종속되는게 아니라
예를 들어ㅡ API만들어 놓으면 한 클라이언트에서만 쓸 수 있는게 아니라 엔드포인트형식만
잘 갖춰지면 어디에서 요청하든 똑같은 응답 값을 받아볼 수 있음, 인터페이스일관성
SOAP는 POST만 사용
XML문서 전송 ... NOT JSON
문서에 맞는 응답값 받아서 하는 프로토콜~
엄격한 보안 규율은 장점. 결제같은 곳에서 사용. 대신 러닝커브 높겠지?
문서를 보내니 페이로드 크기가 커서 레스트API에 비해 응답과 요청 받는 과정 자체가
느리다~
REST API와 HTTP특징을 구분
REST API자체가 HTTP 사용해서 구현되는 것
REST API가 HTTP 속성을 가지고 있는 것이니 REST API만의 것을 구분 하자~
REST란?
: "REpresentational State Transfer" 의 약자로, 리소스에 명칭을 붙혀서 제이슨 등을 통해 상태를 전달
즉, 자원(resource)의 표현(representation)에 의한 상태 전달
- 자원 : 해당 소프트웨어가 관리하는 모든 것 ( 문서, 그림, 데이터, 해당 소프트웨어 자체 등 )
- 표현 : 그 자원을 표현하기 위한 이름 ( DB의 학생 정보가 자원이면, 'students'를 자원의 표현으로 정함 )
- 상태 전달 : 데이터가 요청되는 시점에 자원의 상태를 전달한다. ( JSON 혹은 XML을 통해 데이터를 주고 받는 것이 일반적 )
-> 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이다.
REST의 개념
어떤 자원에 대해 CRUD(Create, Read, Update, Delete) 연산을 수행하기 위해 URI(Resource)로
GET, POST 등의 방식(Method)을 사용하여 요청을 보내며, 요청을 위한 자원은 특정한 형태(Representation of Resource)로 표현
참고) URI 와 URL의 차이점?
URL은 Uniform Resource Locator로 인터넷 상 자원의 위치를 의미
반면 URI는 Uniform Resource Identifier로 인터넷 상의 자원을 식별하기 위한 문자열의 구성으로,
URI는 URL을 포함, URI가 URL보다 포괄적인 범위라고 할 수 있다.
REST API의 특징
- REST API의 가장 큰 특징은 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론이 가능한 것
REST API 디자인 가이드
REST API 설계 시 가장 중요한 항목은 다음의 2가지로 요약
- 첫 번째, URI는 정보의 자원을 표현해야 한다.
- 두 번째, 자원에 대한 행위는 HTTP Method(GET, POST, PUT, PATCH, DELETE)로 표현한다.
- 행위(Method)는 URI에 포함하지 않는다.
REST API의 설계 규칙
1. URI는 명사를 사용한다.(리소스명은 동사가 아닌 명사를 사용해야 한다.)
1-1. 아래와 같은 동사를 사용하지 말 것
- /getAllUsers
- /getUserById
- /createNewUser
- /updateUser
- /deleteUser
2. 슬래시( / )로 계층 관계를 표현한다.
3. URI 마지막 문자로 슬래시 ( / )를 포함하지 않는다.
4. 밑줄( _ )을 사용하지 않고, 하이픈( - )을 사용한다.
5. URI는 소문자로만 구성한다.
6. HTTP 응답 상태 코드 사용
- 클라이언트는 해당 요청에 대한 실패, 처리완료 또는 잘못된 요청 등에 대한 피드백을 받아야 한다.
'Computer Science' 카테고리의 다른 글
제네릭이란 (0) | 2023.03.29 |
---|---|
MSA(Micro Service Architecture) (0) | 2023.03.29 |
인덱스(INDEX)에 대해 (0) | 2023.03.28 |
DI(Dependency Injection) 의존 관계 주입 (0) | 2023.03.28 |
객체지향프로그래밍(Object-Oriented-Programming) (0) | 2023.03.27 |