REST API

철준·2023년 3월 6일
0

TIL

목록 보기
4/4

rest Api

api란 Application Programming Interface 형식이기 때문에 기술에 구애받지 않음
소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령 받을 수 있는 수단

Rest api는 uri와 http를 기반으로 하고 json 형식을 사용한다.
각 요청이 어떤 정보나 동작을 위한 것인지 모습 자체로 추론이 가능하다
rest는 문서 그림 데이터 등의 자원을 이름으로 구분해서 해당 자원에 대한 상태, 정보를 주고 받는 것을 의미한다.
http 메서드를 활동해 crud를 적용하는 것을 의미한다.
Rest api 에서는 get, post, push, delete를 씀 어떤 uri에 어떤 메서드를 사용할지에 대한 약속

네트워크 상에서만 있는건 아님
soap을 대체하여 나온것이 restApi

soap란 뭐야
-> http, https 등을 통해 XML기반 메세지를 교환하는 프로토콜
-> 목적은 SOA를 구현하는 규약이다.
SOA는 Service Oriented Architecture 이다. 즉 service가 중심이 되는 소프트웨어 아키텍쳐다.
SOAP는
1. http로 주고 받을 때 무겁다(복잡하기 때문)
2. 개발환경이 복잡하다.
3. UDDI라는 웹 저장소를 이용해야한다.
web의 장점은 어디서든 누구든 쉽게 접근할 수 있는데, 이 UDDI를 거치지지 않으면 서비스를 이용할 수가 없다.

그래서 등장한 새로운 software architecture의 한 종류
자원의 표현에 의한 상태(데이터) 전달.
JSON 혹은 XML로 상태 전달
Rest의 목적 -> ROA구현
-> Resource Oriented Architecture로 중간 매개체(UDDI)가 없이 resource(데이터들을 통칭)를 직접 주고 받는 아키텍쳐

Restful하게 만든 api 요청은 주소만으로도 대략 어떤 요청인지 파악가능

자원을 구조와 함께 나타내는 구분자를 uri라고 한다.

restApi에서는 post, get, put, delete 4가지 (patch까지 하면 5가지)의 메서드를 사용한다(http 메서드 중)

Post, put, patch는 body를 갖고 있어 정보를 많이, 은닉하여 보낼 수 있다.

post를 활용해 crud가 가능하지만, 각 요청의 의도를 쉽게 파악할 수 있게 하기 위해 구분해서 사용

uri는 명사들로 이루어져야함

restApi의 대안 GraphQL????? Araboza

Rest api는 Representational State Transfer 의 약자임
로이필딩이 만듦
자원 - uri
행위 - http Method
표현 - Representations
3가지 구성으로 이루어져있음

특징
1. 유니폼 인터페이스
지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍쳐 스타일.
2. 무상태성
REST는 무상태성 성격을 갖는다.
작업을 위한 상태정보를 저장하고 관리하지 않는다. 세션정보나 쿠키정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만 단순하게 처리하면 된다. 따라서 서비스의 자유도가 높아지고 불필요한 정보를 관리하지 않음으로 구현이 단순해진다.
3. 캐시기능
HTTP라는 기존의 웹 표준을 그대로 사용하기 떄문에 웹에서 사용하는 기존 인프라를 그대로 활용할 수 있다.
4. 자체표현구조
REST API 메세지만 보고 쉽게 이해할 수 있는 자체 표현 구조로 되어있다.
5. Client-server구조
REST 서버는 API를 제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조로 각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발할 내용이 명확해진다.
6. 계층형구조
REST서버는 다중계층으로 구성될 수 있으면 보안, 로드밸런싱, 암호화 계층을 추가하여 구조상의 유연성을 둘 수 있고, PROXY, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있다.

REST API 디자인 가이드
1. URI는 정보의 자원을 표현해야한다. -> 리소스명은 명사를 사용
2. 자원에 대한 행위는 HTTP Method(GET, POST, PUTM DELETE로 표현한다.)
하이픈(-)은 가독성을 높이는데 사용, 밑줄(_)은 사용하지 않음,
파일 확장자는 URI에 포함하지 않음,
URI 경로에는 소문자가 적합하다.

Rest 의 한계
표준이 없다.
사용할 수 있는 메서드가 4개뿐
RESTful하게 만드려고 method를 사용하여 속도가 느려질 수 있다.(get이 post보다 빠르기 때문)

Rest 아키텍쳐를 따랐다면 RESTful하다고 할 수 있다.
RESTful은 이해와 사용이 쉽다.

0개의 댓글