[22/01/16]REST API

Que Lin·2022년 1월 16일
0

1day 1commit

목록 보기
9/63

API 란?

Application Programming Interface
응용 프로그램 프로그래밍 인터페이스
: 프로그램들이 서로 상호작용하는 것을 도와주는 매개체

REST란?

정의된 '아키텍처 스타일'로, 이는 API를 활용함에 있어서 그 API가 가져야할 디자인 철학, 혹은 미덕을 의미하며, 보다 비전공적으로 설명하자면 '필수요소' 정도로 볼 수 있다. 엄밀히 따지면 REST는 모든 '네트워크'를 위한 것이므로 네트워크가 구성된 곳이라면 어느 곳이든 사용이 가능하지만 현실적으로 99.99%의 네트워크는 우리가 소위 '인터넷'이라고 부르는 HTTP 기반 네트워크이므로 REST API라고 하면 HTTP에 쓰이는걸 의미하는 경우가 많다.

목적

: 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.

URI는 자원을 표현하는 데에 집중하고, 행위에 대한 정의는 HTTP METHOD를 통해 하는 것이 REST한 API를 설계하는 중심 규칙.

조건

Client-Server - 클라이언트와 서버로 분리되어야하며 서로 의존성이 없어야 한다.
Stateless(무상태성) - 상태 정보를 따로 저장하지 않으며, 이용자가 누구인지 혹은 어디서 접근하는지와 관계 없이 결과가 무조건 동일해야 한다. 따라서 REST API는 필연적으로 오픈될 수 밖에 없다.
Cache - HTTP를 비롯한 네트워크 프로토콜에서 제공하는 캐싱 기능을 적용할 수 있어야 한다.
Uniform Interface - 데이터가 표준 형식으로 전송될 수 있도록 구성 요소 간 통합 인터페이스를 사용한다. REST API 태반이 HTTP를 사용하기 때문에 HTTP 표준인 URL과 응답 코드, Request-Response Method 등을 사용한다.
Layered System - API는 REST 조건을 만족하면 필연적으로 오픈될 수 밖에 없기 때문에, 요청된 정보를 검색하는데 있어 계층 구조로 분리되어야 한다.
Self-descriptiveness - API를 통해 전송되는 내용은 별도 문서 없이 쉽게 이해할 수 있도록 자체 표현 구조를 지녀야 한다. 마찬가지로 웹 표준인 JSON과 XML이 절찬리에 사용중이다.

REST API 설계 시 가장 중요한 항목

  • URI는 정보의 자원을 표현해야 한다.
    : 주소요청만으로 어떤 작업을 하고 싶은 지 알 수 있다.(주소 요청을 규격화)
  • 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.

post(C) get(R) put덮어쓰기 patch 그부분만 수정(U) delete(D)
@GetMapping(”/”) / PostMapping / PutMapping / DeleteMapping : Rest Api

기존 주소 vs rest api주소
/detail?m_number=2 : ?쿼리스트링 방식

기능기존방식http methodrest api방식rest api방식 http method
회원가입 페이지 요청/member/saveget/member/saveget
회원가입/member/savepost/member/savepost
로그인 페이지 요청/member/loginget/member/loginget
로그인/member/loginpost/member/loginpost
목록조회/member/findAllget/memberget
상세조회 2번회원/member/detail?m_number=2get/member/2get
삭제처리/member/delete?m_number=2get/member/2 , member/delete/2delete , get
수정화면 요청/member/update?m_number=2get/member/update/2get
수정처리/member/updatepost/member/2put
로그아웃/member/logoutpost/member/logoutget

장점 : REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
여러가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다.
서버와 클라이언트의 역할을 명확하게 분리한다.

단점 : 표준이 존재하지 않는다.
사용할 수 있는 메소드가 4가지 밖에 없다.HTTP Method 형태가 제한적이다.구형 브라우저가 아직 제대로 지원해주지 못하는 부분이 존재한다.
1. PUT, DELETE를 사용하지 못하는 점
2. pushState를 지원하지 않는 점

profile
1일 1커밋 1일 1벨로그!

0개의 댓글