본문 바로가기

개발중/Rest Api

(7)
메일 보내는 API 는 REST API 중에 어느 메소드에 해당이 될까 ? 메일을 보내는 API를 구현할 때 대부분의 경우 HTTP의 POST 메서드를 사용합니다. 이유는 다음과 같습니다: 의미상으로 맞다. POST는 서버에 새로운 리소스를 생성하거나 데이터를 제출할 때 주로 사용되므로, 새로운 이메일을 서버에 제출하는 것은 POST 메서드의 의미와 잘 부합합니다. 데이터 전송 POST 메서드는 요청 본문에 데이터를 포함할 수 있으므로, 이메일의 본문, 수신자, 제목 등과 같은 다양한 정보를 쉽게 전송할 수 있습니다. 보안 비록 HTTP GET 요청도 데이터를 전송할 수 있지만, 민감한 정보나 큰 데이터를 URL의 쿼리 문자열에 포함하는 것은 좋지 않습니다. POST 요청은 이러한 데이터를 요청 본문에 안전하게 포함시킬 수 있습니다. 따라서, 메일을 보내는 API의 경우 POS..
[ Rest API ] REST API 특징 REST API 특징 리소스 중심적 API 는 리소스를 중심으로 구성 되어야 한다. 이전에 언급 했듯이 리소스는 서비스가 리소스를 클라이언트에게 제공할 수 있게 정보를 추상화 한 것이다. 리소스의 내부 구조는 API 를 통해 유출되지 않아야 한다. 예를 들어 주문의 세부 사항은 관계형 데이터 베이스네 개별적으로 저장 될 수 있으므로 해당 내부 구조를 반영하도록 여러 리소스를 생성해서는 안된다. API 는 비지니스 실체에 초점을 맞춰 구현 세부 사항을 숨기기 위한 추상화로써 리소스를 사용해 API 구현을 진화 시킬 수 있어야 한다. URL 을 통한 식별 가능 리소스는 URL 을 통해 식별 할 수 있어야 한다. 이는 동사 대신 명사를 기반으로 한다. 리소스의 컬렉션을 식별하는 해당 URL 은 복수형이어야 한..
[ Rest API ] HATEOAS 를 써야 할까 ? HATEOAS 를 써야 할까 ? REST라는 용어는 많은 소프트웨어 용어와 같이 다양한 정의가 있다. 로이 필딩이 이것을 만들었기 때문에 그의 정의는 다른 사람들의 정의보다 더 많은 가치를 지녀야 한다. 하지만 RESTful 을 충족하는 것이 신성한 것으로 간주돼서는 안되며 레벨 2의 서비스가 되는 것이 해당 API 가 레벨 3 의 API 보다 열등하다는 것을 의미하지 않는다. HATEOAS 를 구현할지 말지는 API 의 본질과 노력의 가치 여부에 달려있다. HATEOAS 란 무엇일까 ? 다음과 같은 예가 있다. POST https://api.examplebuks.org/orders HRRP/1.1 Content-Type : application/json Content-Length : 33 {"drink..
[ Rest API ] 독선적인 RESTful API 독선적인 RESTful API REST 는 이미 나온지 18년이 지났으며 업계에서 많은 논쟁과 토론이 있었다. 이 논쟁의 중점은 HATEOAS 이다. 이에 대한 옹호론자도 있고 회의론자도 있다. 어떤 사람들은 강하게 '싫어함' 을 표현하기도 한다. 리처드슨의 성숙도 모델 2008년 레너드 리터드슨은 100가지 다양한 웹 서비스 설계를 검토한 후에 REST 를 준수하는 의미에서 서비스의 성숙도를 묘사하는 모델을 개발했다. 그의 모델에는 URL, HTTP, Method, 하이퍼 미디어 제약 ( HATEOAS ) 이라는 세 가지 요소가 있다. 서비스가 이러한 기술을 더 많이 채택 할 수록 다음과 같은 성숙한 사항을 고려하게 된다. [ 레벨 3 ] 하이퍼 미디어 제약 [ 레벨 2 ] 각 리소스와 HTTP 메소드..
[ Rest API ] REST 인터페이스의 제약 사항 REST 인터페이스의 제약 사항 리소스 식별 REST 에서 리소스는 서비스에서 리소스를 클라이언트에게 제공할 수 있게 하는 정보를 추상화 한 것이다. 본질적으로 리소스는 사용자나 문서, 이미지, 작업 일 수 있다. 리소스는 URL 를 통해 고유하게 식별 할 수 있어야 한다. 예를 들어 다음과 같은 URL 은 ID 가 1인 작업을 고유하게 식별한다. https://api.example.com/v1/tasks/1 해당 URL 에서 보다시피 URL 에 버전 번호인 v1 을 추가한다. 어떤 사람들은 버전 정보를 리소스 URL 에 넣는 것은 나쁜 습관 이라고 생각한다. 그들은 그것을 HTTP 요청 헤더에 추가하는 것을 선호한다. 다른 사람들은 Restful API 를 만들 때 버전 관리를 사용하는 것 자체가 옳지..
[ Rest API ] REST 아키텍처의 제약 사항 RESTful API 의 제약 사항 REST 아키택처의 제약 조건을 준수하는 웹 서비스 API 를 RSETful API 라고 부른다. 클라이언트 - 서버 이 제약사항은 관심사의 분리에 관한 것이다. 클라이언트 - 서버 아키택처 스타일에서 사용자 인터페이스에 대한 관심사는 데이터 저장소의 관심사와 분리하는 것이다. 웹 애플리케이션은 이 스타일에 적합하다. 프런트엔드는 브라우저 내부에 클라이언트로 존재하며 클라이언트는 API 를 통해 서버와 통신한다. 잘 알려진 또 다른 아키택처 스타일은 이벤트 기반의 통합 아키택처이다. 시스템 구성요소는 네트워크를 통해 이벤트를 전송하고 동시에 관심이 있는 이벤트를 수신한다. 무상태성 클라이언트와 서버 간의 통신은 무상태성 ( Stateless ) 를 가진다. 클라이언트에..
[ Rest API ] 개요 API 는 API 공급자와 API 소비자 간의 계약이다. REST 는 간단하게 활용하고 이해하기 쉽기 때문에 가장 많이 활용되는 API 스타일 중 하나다. RSET 라는 용어는 2000 년에 로이 필딩 (Roy T. Fielding) 이 자신의 학술 논문에서 정의한 아키텍쳐 스타일인 REpresentational State Transfer 를 나타낸다. 로이 필딩에 따르면 , Restful 이라고 하는 많은 API 는 실제로 Restful 하지 않다. Restful 하다는 것은 'HTTP를 통한 JSON' 이라고 생각하는 사람들이 있다. 수년간 HATEOAS ( Hypermedia As The Engine Of Application State 의 줄임말 ) 에 관한 논쟁이 있었다.