REST API란

최성2·2022년 6월 9일
1
post-thumbnail

REST란 웹에 존재하는 모든 자원, 즉 이미지, 동영상, 텍스트 등의 자원에 고유한 URI을 부여해 활용하는 것을 의미한다

API란 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것을 의미한다

URI(Uniform Resource Identifier)
인터넷 상의 자원을 식별하기 위한 문자열
URL(Uniform Resource Locator)
인터넷 상 자원이 실제로 존재하는 위치를 의미 = 웹 주소



REST API

REST의 특징을 지키면서 API를 제공하는 것을 의미한다. 일종의 가이드를 지키면서 개발 하자!

: HTTP 통신에서 어떤 자원에 대한 CRUD 요청을 Resource와 Method로 표현하여 특정한 형태(Representation of Resource)로 전달하는 방식

Resource

모든 자원에 고유한 ID가 존재하고, 자원을 구별하는 ID는 ‘/groups/:group_id’와 같은 HTTP URI 다

Method

서버에 요청을 보내기 위한 방식으로 GET, POST, PUT, DELETE 가 존재한다. CRUD에 맞는 Method를 사용해서 서버에 요청을 보내야 한다

표현(Representation of Resource)

클라이언트와 서버가 데이터를 주고받는 형태로 json 을 주로 사용한다


Rest API특징

  1. Uniform Interface(일관된 인터페이스)
    특정 플랫폼이나 언어, 기술에 종속받지 않는다

  2. Stateless(무상태성)
    세션이나 쿠키로 상태정보를 관리 및 저장하지 않기 때문에 구현이 단순하다

  3. Cacheable(캐시 가능)
    웹에서 사용하는 인프라를 그대로 사용하기 때문에, 캐시를 사용할 수 있다. 고로, 응답시간이 빠르다

  4. Self-Descriptiveness(자체 표현)
    요청 메시지만 보고도 쉽게 이해할 수 있다
    POST , http://localhost:3000/notice, { "notice: {"title": "제목", "content": "내용"}}

  5. Client-Server Architecture (서버-클라이언트 구조)
    각각의 역할이 확실히 구분되고 일관적인 인터페이스로 분리되어 작동한다
    - Server: API를 제공하고 비지니스 로직 처리 및 저장을 책임진다
    - Client: 로그인 정보 등을 직접 관리하고 책임진다

  6. Layered System(계층 구조)
    클라이언트와 서버가 분리되어 있기 때문에 중간에 프록시 서버, 암호화 등 을 위한 계층을 추가할 수 있다


REST API를 설계할 때 강제하는 표준은 없지만, 보다 'ful'하게 설계하는 방법은 존재한다.

URI가 정보의 자원을 잘 표현했는지, 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)등의 메소드를 사용했는지를 살펴봐야한다.

세세하게 들어가면, 명사로 네이밍을 한다던가, 리스트를 표현할 때는 복수형, 언더바 대신 하이픈을 사용한다는 규칙들이 존재한다. 각 요청이 어떤 동작이나 정보를 위한 것인지 그 요청의 모습 자체로 추론이 가능하도록 설계하는 것이 가장 중요하다

profile
hello!

2개의 댓글

comment-user-thumbnail
2022년 6월 17일

잘 읽었습니다 ^^

1개의 답글