1부: REST란 무엇입니까? 이 부분에서는 클라이언트와 서버 간에 통신이 어떻게 이루어지는지 자세히 살펴보겠습니다. 그 과정에서 우리는 새로운 용어를 공개하고 이에 대한 설명을 제공할 것입니다. 모든 것을 명확하게 하기 위해 일부 RESTful 애플리케이션의 예를 사용하여 클라이언트-서버 통신을 분석하겠습니다. 고객과 고객의 주문에 대한 정보를 저장할 수 있는 웹 애플리케이션을 개발한다고 가정해 보겠습니다. 저것들. 우리 시스템은 일부 엔터티를 조작할 수 있습니다. 즉, 생성, 편집, 삭제 및 이에 대한 정보 제공이 가능합니다. 이러한 엔터티는 다음과 같습니다.
- 클라이언트 - 클라이언트;
- 주문 - 고객 주문;
- 품목-상품.
요청사항
클라이언트 요청은 거의 항상 HTTP를 통해 이루어집니다. 일반적으로 HTTP 요청은 여러 구성 요소로 구성됩니다.- HTTP 방식;
- 제목;
- URI;
- 요청 본문.
URI 및 리소스
클라이언트가 요청을 통해 얻거나 수정하는 데이터를 리소스라고 합니다. 클라이언트-서버 상호 작용의 기본은 리소스 조작입니다. REST의 리소스는 이름을 지정할 수 있는 모든 것입니다. 어떤 의미에서 이는 Java의 클래스와 같습니다. Java에서는 무엇이든 클래스를 만들 수 있습니다. REST에서도 마찬가지입니다. 리소스는 사용자, 문서, 보고서, 주문 등 무엇이든 될 수 있습니다. 이 모든 것은 일부 엔터티의 추상화일 수도 있고 그림, 비디오, 애니메이션, PDF 파일과 같은 파일과 같은 구체적인 것일 수도 있습니다. 이 예에는 다음과 같은 3가지 리소스가 있습니다.- 클라이언트 - 클라이언트;
- 주문 - 고객 주문;
- 품목-상품.
- /clients - 모든 기존 클라이언트의 URI입니다.
- /clients/23 - 특정 클라이언트의 URI, 즉 ID=23인 클라이언트입니다.
- /clients/4 - 특정 클라이언트의 URI, 즉 ID=4인 클라이언트입니다.
- /clients/4/orders — 클라이언트 번호 4의 모든 주문에 대한 URI;
- /clients/1/orders/12 - 클라이언트 번호 1의 주문 번호 12의 URI입니다.
- /clients/1/orders/12/items — 클라이언트 1번이 주문한 12번의 모든 제품 목록의 URI입니다.
HTTP 방식
HTTP 방법(영어 HTTP 방법)은 리소스에 대한 주요 작업을 나타내는 컨트롤 및 구분 기호를 제외한 모든 문자의 시퀀스입니다. 몇 가지 일반적인 HTTP 메서드가 있습니다. RESTful 서비스에서 가장 자주 사용되는 항목을 나열합니다.- GET - 특정 리소스(ID를 통해) 또는 리소스 모음에 대한 정보를 얻는 데 사용됩니다.
- POST - 새 리소스를 만드는 데 사용됩니다.
- PUT - 리소스를 변경하는 데 사용됩니다(ID를 통해).
- DELETE - 리소스를 삭제하는 데 사용됩니다(ID를 통해).
제목
요청과 응답에는 HTTP 헤더가 포함됩니다. 요청(또는 응답)에 대한 추가 정보를 보냅니다. 헤더는 키-값 쌍입니다. Wikipedia 페이지 에서 가장 일반적인 제목 목록을 읽을 수 있습니다 . REST를 사용하면 클라이언트가 서버에 대한 요청에 Accept 헤더를 보낼 수 있는 경우가 많습니다. 클라이언트가 어떤 형식으로 응답을 받을 것으로 예상하는지 서버에 알려야 합니다. MIME 유형 목록에는 다양한 형식 옵션이 제공됩니다. MIME (다목적 인터넷 메일 확장)은 인터넷을 통해 보낼 수 있도록 정보를 인코딩하고 메시지 형식을 지정하기 위한 사양입니다. 각 MIME 유형은 슬래시로 구분된 유형과 하위 유형의 두 부분으로 구성됩니다. 다양한 파일 유형에 대한 MIME 유형의 예:- 텍스트 - 텍스트/일반, 텍스트/CSS, 텍스트/html;
- 이미지 - 이미지/png, 이미지/jpeg, 이미지/gif;
- 오디오 - 오디오/wav, 오디오/mpeg;
- 비디오 - 비디오/mp4, 비디오/ogg;
- 애플리케이션 - 애플리케이션/json, 애플리케이션/pdf, 애플리케이션/xml, 애플리케이션/옥텟-스트림.
Accept:application/json
이 헤더는 클라이언트가 JSON 형식의 응답을 받을 것으로 예상한다는 것을 서버에 알려줍니다.
요청 본문
클라이언트가 서버로 보낸 메시지입니다. 요청에 본문이 있는지 여부는 HTTP 요청 유형에 따라 다릅니다. 예를 들어 GET 및 DELETE 요청은 일반적으로 요청 본문을 포함하지 않습니다. 그러나 PUT 및 POST에는 다음이 포함될 수 있습니다. 이는 모두 요청 유형의 기능적 목적에 관한 것입니다. 결국, id(URL로 전송되는)로 데이터를 받고 삭제하기 위해서는 서버에 추가 데이터를 보낼 필요가 없습니다. 하지만 새 리소스(POST 요청)를 생성하려면 이 리소스를 전송해야 합니다. 기존 리소스를 수정하는 경우에도 마찬가지입니다. REST에서는 요청 본문을 전송하는 데 XML 또는 JSON 형식이 가장 자주 사용됩니다. 가장 일반적인 형식은 JSON입니다. 서버에 요청을 보내고 그 안에서 새 리소스를 생성한다고 가정해 보겠습니다. 기억하신다면, 우리는 고객 주문을 관리하는 애플리케이션을 예로 살펴보았습니다. 새 클라이언트를 생성한다고 가정해 보겠습니다. 우리의 경우 클라이언트에 대해 다음 정보를 저장합니다. 이름 이메일 전화번호 그러한 요청의 본문은 다음 JSON이 될 수 있습니다.{
"name" : "Amigo",
"email" : "amigo@jr.com",
"phone" : "+7 (191) 746-43-23"
}
요청 종합
그래서 우리는 클라이언트 요청이 무엇으로 구성될 수 있는지 살펴보았습니다. 이제 설명이 포함된 쿼리의 몇 가지 예를 살펴보겠습니다.요구 | 설명 |
---|---|
|
23번 클라이언트에 대한 정보를 json 또는 xml 형식으로 가져옵니다. |
|
다음 필드를 사용하여 새 클라이언트를 만듭니다. 이름 - Amigo 이메일 - amigo@jr.com Tel. — +7 (191) 746-43-23 |
|
클라이언트 #1을 다음과 같이 편집하십시오. 이름 - Ben 이메일 - bigben@jr.com Tel. — +380 (190) 346-42-13 |
|
시스템에서 고객 번호 12의 주문 번호 6을 삭제합니다. |
답변
서버의 응답에 대해 몇 마디 말해보자. 대답은 일반적으로 다음 부분으로 구성됩니다.- 응답 코드;
- 헤더;
- 응답 본문.
HTTP 응답 코드
HTTP 응답 코드를 자세히 살펴보겠습니다. 다음은 Wikipedia의 인용문입니다. HTTP 상태 코드는 HTTP 프로토콜을 통한 요청에 대한 서버 응답의 첫 번째 줄의 일부입니다. 10진수 세 자리의 정수입니다. 첫 번째 숫자는 상태의 클래스를 나타냅니다. 응답 코드 뒤에는 일반적으로 공백으로 구분된 영어 설명 문구가 옵니다. 이는 해당 응답자에게 이 특정 응답의 이유를 설명합니다. 예:- 201 생성됨;
- 401 승인되지 않음;
- 507 저장 공간이 부족합니다.
- 1ХХ - 정보 제공용;
- 2ХХ - 고객 요청의 성공적인 수락 및 처리 사례에 대해 알립니다.
- 3XX - 작업을 성공적으로 완료하려면 일반적으로 다른 URI를 사용하여 다른 요청을 해야 함을 클라이언트에 알립니다.
- 4ХХ - 클라이언트 오류. 예를 들어 클라이언트가 존재하지 않는 리소스를 요청할 때 발생할 수 있는 잘못 구성된 요청이나 잘 알려진 404 찾을 수 없음 코드가 있습니다.
- 5ХХ - 서버 오류. 서버 오류로 인해 작업이 실패한 경우 클라이언트에 반환됩니다.
GO TO FULL VERSION