rest api tutorial rest api architecture
이 자습서에서는 REST API, 웹 서비스, REST API 아키텍처, REST API 제약 조건 및 POSTMAN을 사용하여 API를 테스트하는 방법에 대해 알아 봅니다.
전제 조건 : 웹 서비스에 대한 기본 지식.
검사 여기 웹 서비스에 대한 명확한 이해를 얻을 수 있습니다.
학습 내용 :
REST API 란?
API는 단순히 소프트웨어 구성 요소가 서로 통신하는 데 사용하는 인터페이스입니다. 서비스는 잘 정의되고 독립적이며 다른 서비스에 의존하지 않는 기능입니다.
웹 서비스는 API의 한 유형으로 거의 모두 HTTP를 통해 작동합니다. REST 아키텍처를 사용하여 웹 API를 개발하면 REST 웹 API라고합니다.
현재 웹 서비스에는 두 가지 유형이 있습니다.
- 비누
- 쉬다
SOAP와 REST의 차이점
비누 | 쉬다 |
---|---|
XML 형식 만 사용하여 요청 본문에 데이터를 보낼 수 있습니다. | 요청을 보내기위한 XML, JSON 등의 형식을 가질 수 있습니다. |
프로토콜입니다 | 아키텍처 스타일이며 모든 프로토콜과 독립적이며 REST는 SOAP 웹 서비스를 사용할 수 있습니다. |
Simple Object Access Protocol의 약자입니다. | Representational State Transfer의 약자입니다. |
서비스 인터페이스를 사용하여 비즈니스 로직을 노출합니다. | URI를 사용하여 비즈니스 로직을 노출합니다. |
SOAP에는 따라야 할 엄격한 표준이 있습니다. | REST가 뒤 따르는 엄격한 표준이 언급되어 있지 않습니다. 그러나 사용자는 REST를 사용하여 웹 서비스를 개발하는 동안 몇 가지 표준을 따를 수 있습니다. |
더 많은 대역폭이 필요합니다. | 가볍습니다. |
자체 보안을 정의 할 수 있습니다. | REST는 전송에서 보안 조치를 상속합니다. |
가장 좋은 예는 Google, AMAZON입니다. | 가장 좋은 예는 YAHOO, LINKEDIN, AMAZON입니다. |
SOAP는 HTTP, SMTP 등 프로토콜을 사용합니다. | REST는 HTTP에만 의존합니다. |
바인딩 메시지, 작업 등에 대한 규칙은 WSDL로 작성됩니다. | REST는 웹 서비스에서 제공하는 기능을 설명하기 위해 WADL 형식을 따릅니다. |
표준화되어 있습니다. | REST 서비스는 표준화되지 않았습니다. |
기존 규칙, 바인딩 등으로 인해 더 많은 학습 시간이 필요합니다. | 단순성 때문에 배우는 데 시간이 덜 걸립니다. |
SOAP 대신 REST를 선택하는 이유는 무엇입니까?
다음은 SOAP 대신 REST를 선택하는 이유를 설명합니다.
- 웹 API를 개발하고 테스트하는 데 매우 유용합니다.
- REST는 더 적은 대역폭을 필요로합니다.
- REST 기반 웹 API에 AJAX를 사용할 수 있습니다.
- 더 적은 파싱 오버 헤드가 필요합니다.
- JSON으로 생성 된 페이로드 크기는 더 작습니다.
웹을 통해 사용할 수있는 많은 클라이언트 / 도구가 있으므로 RESTful 웹 서비스를 사용할 수 있습니다.
그들은:
- 우편 집배원
- 고급 휴식 클라이언트
- DHC Rest 클라이언트
- 요청자
- 잠 잘 수 없음
- Assertible
- 포스터
왜 Postman인가?
- 사용 가능한 모든 옵션이 표시됩니다.
- Postman에는 추가 기능 (Runner라고 함)이 있습니다.
- 사용자 친화적 인 UI와 사용하기 쉽습니다.
- 더 큰 커뮤니티 그룹 / 회원.
REST API 아키텍처
주로 소프트웨어 아키텍처 스타일의 웹 아키텍처입니다. 분산 하이퍼 미디어 시스템 용입니다. RESTful API는 RFC 2616 프로토콜에 정의 된 HTTP 방법론을 직접 활용합니다.
몇 가지 정의
불 Application Programming Interface를 의미합니다. 애플리케이션 소프트웨어를 빌드하기위한 서브 루틴 정의, 프로토콜 및 도구 세트입니다.
웹 서비스 데이터 / 내장 메서드를 포함하는 일부 프로그램 코드입니다. 사용자, 타사 응용 프로그램 등과 통신하기 위해 조직에서 인터넷을 통해 배포합니다. 메시지 통신을 위해 대부분 XML이 메시징 시스템으로 사용됩니다. XML은 단순히 사용자와 응용 프로그램 간의 모든 통신을 인코딩합니다.
HTTP World Wide Web에서 사용하는 Hypertext Transfer Protocol을 의미합니다. 메시지 형식화 및 전송 방법과 웹 서버 및 브라우저가 다양한 명령에 대한 응답으로 수행하는 작업을 정의합니다.
건축 스타일, 이것들은 구조를 만들고 심지어 그것을 독특하게 만드는 데 사용되는 기능이 특징입니다. 스타일은 계층화 및 균일 인터페이스의 두 가지 유형입니다.
미움 : Uniform Resource Identifier라고도합니다. 리소스 (텍스트 문서, 이미지 파일 등)를 식별합니다.
URL : Uniform Resource Locator라고도합니다. 네트워크 위치를 포함하는 URI의 하위 집합입니다.
항아리 : Uniform Resource Name이라고도하는 URI의 하위 집합으로 지정된 공간 내에 이름이 포함되지만 위치는 포함되지 않습니다.
예를 들어
http://elearning.com/amazon/restapi.html#books
여기, 위의 예에서
미움 : http://elearning.com/amazon/restapi.html#posts
URL : http://elearning.com/amazon/restapi.html
항아리 : elearning.com/amazon/restapi.html#posts
소프트웨어의 버그는 무엇입니까
따라서 URL은 리소스를 식별하는 URI이며 리소스에 액세스하는 방법을 설명하여 리소스를 찾는 방법도 제공합니다.
따라서 모든 URL은 URI가 될 수 있지만 그 반대는 사실이 아닙니다.
RESTful 서비스는 URL (Uniform Resource Locator)을 통해 노출됩니다. 이것은 수락되거나 반환되는 것과 리소스의 ID를 구분하는 논리적 이름입니다.
샘플 REST 아키텍처 :
REST API 제약
API 인터페이스는 다음 제약 조건을 충족하는 경우 RESTful이라고합니다.
- 균일 한 인터페이스 : 즉, 우리가 사용하는 클라이언트에 관계없이 REST 서비스를 구현하고 사용하는 기본 개념은 동일하게 유지됩니다. 개발 된 모든 REST API에는 개발에 대한 공통 접근 방식이 있어야합니다.
- 무국적 : 이것은 저장할 세션이 없음을 의미합니다. 따라서 서버는 클라이언트가 보낸 HTTP 요청을 저장하지 않습니다. 따라서 서버의 경우 각각의 모든 HTTP 요청은 새로운 요청입니다. 요청이 몇 번이나 고객이 고유한지 여부에 관계없이.
- 캐시 가능 : 캐싱은 서버 대신 캐시에서 데이터와 응답이 얼마나 자주 액세스되는지를 의미합니다. 캐싱의 개념은 클라이언트 요청을 보내는 동안 적용 가능합니다. 따라서 성능 향상은 클라이언트 측에서 이루어집니다.
- 클라이언트 서버: 서버와 클라이언트는 구현 측면에서 서로 독립적입니다. 클라이언트는 인증과 함께 또는 인증없이 요청 URI 만 보내면됩니다. 그런 다음 서버는 나머지 단계, 즉 응답을 수행합니다.
- 계층 형 시스템 : 클라이언트는 리소스 URI로 서버에 요청 만 보낼 수 있습니다. 그러나 요청이 서버로 전송되기 전에 계층화 된 시스템 아키텍처를 제공하는 REST API가 있습니다. 즉, 한 서버에 API를 배포하고 다른 서버에 데이터를 배포하고 다른 서버에 인증을 배포 할 수 있습니다.
- 주문형 코드 (선택 사항) : 때때로 클라이언트는 단순한 응답 이상의 것을 필요로 할 수 있습니다. REST API를 사용하면 실행 코드를 응답으로 보낼 수 있습니다 (이 실행 코드는 위젯 또는 컨트롤이 될 수 있음). 그러나이 기능을 활성화 / 구현했는지 여부는 전적으로 선택 사항입니다.
Rest API와 관련된 몇 가지 추가 용어 :
끝점 : 웹 요청을 수락하는 URL에 대한 참조입니다. 웹 서비스는 끝점 참조를 사용하여 주소를 지정할 수 있습니다.
예를 들어 Http : // {Domain_URL} //librarygr/libraries.xml
자원 : 엔드 포인트의 하위 집합입니다. 일반적으로 엔드 포인트는 웹 서비스를 통해 사용할 수있는 일부 개체를 노출합니다. 리소스는 특히 끝점 URI에있는 개체의 해당 부분입니다.
예를 들어 Http : // {Domain_URL} // api / pg_library / ornithology / swan
유효 탑재량 : 페이로드는 POST 또는 PUT 작업을 수행하는 동안 전송되는 정보입니다. HTTP 요청 본문에 지정된 정보입니다.
페이로드는 JSON 형식으로 전송됩니다. 예를 들어
{ Id: 1, name:'sam', phones:({title:'mobile',number:9898989899}, {title:'home',number:8888888888}) }
매개 변수 :
두 가지 방법으로 매개 변수를 전달할 수 있습니다.
쿼리 매개 변수 : URL의 쿼리 문자열 (? 뒤의 부분)에서 키 / 값 쌍에 액세스하는 데 유용합니다.
최상의 예
http://jsonplaceholder.typicode.com/posts/?id=3
경로 매개 변수 : URL의 일부를 매개 변수로 일치시키는 것이 유용합니다. Form-data, x-www-form-urlencoded, raw, binary 방식으로 정보를 경로 매개 변수로 보낼 수 있습니다.
최상의 예 :
DVD를 하드 드라이브에 복사하기위한 최고의 소프트웨어
https://api.github.com/gists/49b05378bb8920d5b4ec54efc27103e2/comments
POSTMAN은 무엇입니까?
POSTMAN은 REST 클라이언트로 Chrome 브라우저와 함께 제공되는 앱입니다. 개발자가 API 호출 테스트를 더 쉽게 할 수 있도록 개발 중입니다. API 요청을 보내고 API 응답을 읽기위한 자체 GUI가 있습니다.
REST API 테스트는 수동 및 자동화 모두 수행 할 수 있습니다.
다음 섹션에서는 POSTMAN 클라이언트를 사용하여 웹 API를 수동으로 테스트하는 방법을 배웁니다.
Postman으로 API를 테스트하는 방법?
설치
우리는 Chrome 웹 스토어 . Chrome 브라우저에서 Postman을 검색합니다. 딸깍 하는 소리 여기 Chrome 버튼에 추가합니다.
성공적으로 설치되면 Chrome 앱에서 POSTMAN을 찾을 수 있습니다. Postman 아이콘을 클릭하면 POSTMAN이 열립니다. 처음으로 시작하는 데 시간이 걸립니다.
사용 방법을 이해하려면 다음 URL을 참조하십시오. 우편 집배원 도구로.
전제 조건 : 웹을 통해 배포 된 서비스에 액세스하려면 인터넷 연결이 필요합니다. 로컬로 배포 된 서비스에 액세스하는 경우 POSTMAN을 통해 테스트를 실행하는 사용자에게 충분한 권한과 권한이 부여되었는지 확인하십시오.
더미 리소스 URI : 이 튜토리얼에서는 실제 URI 대신 더미 URI를 사용합니다. 원하는대로 응답을 제공하지만 서버를 변경할 수 없습니다.
http://jsonplaceholder.typicode.com
탐색 단계 :
#1) POSTMAN 앱이 시작되면 기본적으로 요청 페이지를 볼 수 있습니다.
#두) 드롭 다운을 클릭하면 API 호출 목록을 볼 수 있습니다. 드롭 다운에서 옵션을 선택하여 서버에 대한 API 호출을 요청할 수 있습니다.
#삼) POSTMAN의 오른쪽 상단 모서리에있는 환경 변수 버튼을 클릭합니다. 테스트 할 특정 환경을 설정합니다. 향후 실행을 위해 저장할 수 있습니다.
# 4) 저장된 환경은 환경 드롭 다운에서 액세스 할 수 있습니다.
# 5) 다음으로 주어진 상자에 리소스 URI를 설정해야합니다.
# 6) 리소스 URI 필드 옆에있는 Params 버튼을 클릭하여 쿼리 매개 변수를 지정합니다.
# 7) 인증 탭을 클릭하고 드롭 다운에서 인증 유형을 선택한 다음 원하는 인증을 설정하거나 단순히 인증 없음으로 둘 수 있습니다.
# 8) 헤더 탭을 클릭하고 콘텐츠 유형과 같은 필수 헤더를 설정하십시오.
# 9) 본문 탭을 클릭하고 양식 데이터 라디오 버튼을 선택합니다. 요청 URL과 함께 전송해야하는 필수 본문 매개 변수를 지정합니다.
# 10) 본문 탭을 클릭하고 x-www-form-urlencoded 라디오 버튼을 선택합니다. 요청 URL과 함께 인코딩으로 전송해야하는 필수 본문 매개 변수를 지정합니다.
#열한) 본문 탭을 클릭하고 '원시'라디오 버튼을 선택합니다. 요청 URL과 함께 전송해야하는 필수 본문 매개 변수를 지정하십시오. 이것은 실제 JSON 형식입니다.
단순 정렬 알고리즘 C ++
# 12) 본문 탭을 클릭하고 '이진'라디오 버튼을 선택합니다. 요청 URL과 함께 전송해야하는 필수 본문 매개 변수 (일반적으로 파일)를 지정합니다.
# 13) 위에서 지정한대로 모든 세부 정보를 구성했으면 이제 요청을 '보내기'할 수 있습니다. 또한 전송 요청을 request.json으로 저장할 수 있습니다 (요청의 이름을 변경할 수 있습니다).
# 14) 기록 탭의 왼쪽 패널에서 만들어진 요청 목록을 볼 수 있습니다.
#열 다섯) 또한 기존 Collection 또는 새로운 Collection에 Request (URI, Authorization, Parameters, body 등)와 관련된 모든 세부 정보를 저장할 수 있습니다. 요청이 컬렉션에 추가되면이를 내보내기 (공유) 할 수 있으며 기존 컬렉션을 가져올 수도 있습니다.
컬렉션을 링크로 공유하거나 간단한 생성 코드를 통해 팀 라이브러리로 공유 할 수 있습니다. 우리는 항상 전체 컬렉션 제품군을 실행할 수 있습니다.
컬렉션 URL을 웹에 게시하여 게시 된 URL에 액세스하는 모든 사람이 컬렉션에 액세스하고 Web API에서 제공하는 서비스를 사용할 수 있도록 할 수 있습니다.
POSTMAN에 로그인하는 기능이있어, 이력, 컬렉션, 환경 데이터, 로컬 스토리지를 저장하여 POSTMAN에 로그인 한 후 언제 어디서나 액세스 할 수 있습니다.
달리는 사람
Collections 폴더에있는 리소스를 실행하는 데 사용됩니다.
결론
대부분의 회사는 웹 서비스의 개발 / 구현을 위해 REST 아키텍처 스타일을 채택하고 있습니다. 이는 프로젝트의 기존 / 신규 구성원에 대한 교육이 덜 필요한 단순하고 사용자 친화적 인 인터페이스이기 때문입니다. 조직은 기존 웹 서비스와 함께 REST를 고려하고 있습니다.
또한 읽기 = >> Flask API 튜토리얼
이 REST API 시리즈의 다음 자습서에서는 다양한 유형의 응답 코드, REST 요청 유형 등에 대해 설명합니다.
추천 도서
- Rest API 응답 코드 및 Rest 요청 유형
- POSTMAN 자습서 : POSTMAN을 사용한 API 테스트
- BDD 접근 방식을 사용하는 Cucumber로 REST API 테스트
- 2021 년 최고의 10 가지 API 테스트 도구 (SOAP 및 REST API 테스트 도구)
- Spring RestTemplate 및 TestNG를 사용한 REST API 테스트
- Rest Assured 및 Jenkins를 사용하여 API 요청을 자동화하는 방법
- SoapUI Pro에서 REST 프로젝트를 만드는 방법 : 자습서 # 13
- Parasoft SOAtest 자습서 : 스크립트없는 API 테스트 도구