프로그램 작성

RESTful – 초보자를 위한 빠른 가이드

2021년 10월 30일

구축을 원하신다면 응용 프로그램 인터페이스(API) 웹 애플리케이션의 경우 RESTful이 사용됩니다. API(응용 프로그램 인터페이스)란 무엇입니까? 응용 프로그램 인터페이스는 두 소프트웨어 응용 프로그램 간의 중재자입니다. 이를 통해 두 소프트웨어 응용 프로그램이 서로 안전하고 안전하게 통신할 수 있습니다. 일상 생활에서 사용되는 대표적인 API 애플리케이션은 페이스북을 사용하거나, 채팅 애플리케이션을 사용하거나, 휴대폰에서 일기예보 앱을 사용하는 것입니다.

API가 정확히 무엇인지 이해하기 위해 간단한 예를 하나 살펴볼까요? 식당의 예를 생각해 보십시오. 우리는 식당에 가서 우리가 선택한 음식을 먹습니다. 우리가 하는 일은 메뉴 카드를 관찰하고 메뉴에서 선택한 항목에 대해 웨이터에게 말하는 것입니다. 그러면 웨이터가 주문을 주방 부서에 알리고 음식이 준비됩니다. 음식이 준비되면 웨이터가 테이블에서 음식을 제공합니다. 여기에서 웨이터는 당신과 주방 부서 사이의 인터페이스입니다. 두 시스템이 통신하는 동안에도 마찬가지입니다.

API(응용 프로그램 인터페이스)는 OpenAPI, 파트너 API, 내부 API 및 복합 API의 네 가지 기본 유형으로 분류됩니다. OepnAPI는 공개적으로 사용 가능하므로 모든 사람이 액세스할 수 있습니다. 파트너 API에서 특정 사용자는 공개 사용을 위해 개발되지 않았기 때문에 액세스할 수 있는 적절한 권한이 필요합니다. 내부 API는 회사의 내부 사용을 위해 특별히 설계되었습니다. 마지막으로 복합 API는 일반적으로 회사의 운영 및 성과를 가속화하는 데 사용됩니다.

또 다른 API 유형은 웹 서비스 API입니다. 네 가지 기본 웹 서비스 API, SOAP, XML-RPC, JSON-RPC 및 REST가 있습니다. SOAP는 다음을 의미합니다. 단순 개체 액세스 프로토콜 , XML 형식을 사용하여 데이터를 전송합니다. SOAP API는 다음을 사용합니다. 웹 서비스 정의 언어 (WSDL) 인터페이스를 정의합니다. 또 다른 웹 서비스 API는 XML-RPC . 이름에서 알 수 있듯이 데이터 공유를 위해 XML 형식을 사용했습니다. XML-RPC API는 SOAP API보다 간단하고 액세스하기 쉽습니다.

다음 웹 서비스 API는 JSON-RPC . XML과 동일한 API이지만 데이터 공유를 위해 JSON 형식을 사용합니다. 마지막으로 REST API는 위의 세 가지 모두와 다릅니다. 건축 표준의 모음입니다. REST API는 RESTful API라고도 합니다. 매우 적은 대역폭을 필요로 하기 때문에 일반적으로 사용되는 웹 서비스 API 중 하나입니다.

이 기사에서는 RESTful 웹 서비스에 대한 빠른 가이드를 볼 것입니다. 이 게시물은 RESTful 웹 서비스에 대한 모든 것을 배우는 데 도움이 될 것입니다. RESTful 웹 서비스 개념을 쉬운 예를 통해 보다 직관적으로 설명했습니다. 시작하기 전에 기억해야 할 한 가지 RESTful을 이해하다 API는 RESTful이 웹 애플리케이션 개발을 위한 웹 서비스이므로 Java 프로그래밍 언어, HTML, CSS, AJAX 및 Text Editor에 대한 더 나은 지식이 있어야 합니다. 이제 RESTful API 튜토리얼을 시작하겠습니다.

목차

RESTful 웹 서비스 API란?

RESTful API가 무엇인지 알기 전에 먼저 웹 서비스가 실제로 무엇인지 알아야 합니다. ㅏ 웹 서비스 시스템 간에 데이터를 공유하거나 교환하는 데 필요한 일련의 표준 또는 원칙입니다. 오늘날 우리는 휴대폰과 데스크탑에서 여러 애플리케이션을 사용합니다. 이러한 응용 프로그램은 다양한 프로그래밍 언어로 작성되었으며 여전히 고유한 운영 체제에서 작동합니다. 웹 서비스를 사용하면 다양한 운영 체제의 특정 소프트웨어 응용 프로그램에 액세스할 수 있습니다.

RESTful API는 웹 서비스 API입니다. 여기에는 아키텍처 표준 모음이 포함되며 특정 데이터에 액세스하고 사용하기 위해 HTTP 프로토콜을 사용합니다. REST 의미 대표 국가 이전 . RESTful API에서 관련된 모든 구성 요소는 리소스로 처리됩니다. 다음을 사용하여 이러한 리소스에 액세스할 수 있습니다. HTTP 프로토콜 행동 양식.

RESTful API에 관련된 서버와 클라이언트가 있습니다. REST API의 클라이언트는 서버에서 제공하는 리소스에 접근하여 이를 조작할 수 있습니다. 각 리소스에는 별도의 URI 또는 ​​전역 ID가 있습니다. URI 또는 ​​전역 ID를 사용하여 RESTful API에서 리소스를 식별할 수 있습니다. URI는 다음을 의미합니다. 통일 자원 식별자 . 리소스 표현을 위해 REST API에서 텍스트, XML.JSON 또는 JSON 형식을 사용할 수 있습니다.

RESTful 웹 서비스는 일반적으로 클라우드 소비자가 사용하므로 웹 서비스에 액세스하고 관리할 수 있습니다. REST API는 강력한 API를 생성하기 위한 가장 바람직한 선택 중 하나입니다. REST 아키텍처를 사용하여 구축된 API를 통해 사용자는 관리 가능한 방식으로 클라우드 서비스와 상호 작용할 수 있습니다. API를 만들기 위해 RESTful 웹 서비스를 사용하는 인기 있는 웹사이트는 다음과 같습니다. 아마존 웹 서비스 (AWS), Twitter, LinkedIn 및 Google.

RESTful 웹 서비스 API 작업

RESTful 웹 서비스에 대한 간략한 설명을 살펴보았습니다. 이제 RESTful API의 작동 방식을 알려주세요. RESTful API는 두 애플리케이션 간의 모든 단일 트랜잭션을 여러 개의 작은 모듈로 나눕니다. 여기서 거래는 데이터 또는 정보의 교환을 의미합니다. 각 모듈은 트랜잭션의 필수 정보를 보유합니다. 따라서 개발자는 모든 웹 응용 프로그램용 API를 구축하는 데 편안함과 유연성을 느낍니다.

오늘날 CDMI(Cloud Data Management Interface), AmazonS3 등과 같은 많은 회사에서 API 개발을 위한 특정 모델을 제공합니다. RESTful API 웹 서비스에는 리소스에 액세스하기 위한 수많은 명령이 있습니다. 리소스 표현은 주어진 타임스탬프에서 특정 리소스의 상태를 정의합니다.

RESTful 웹 서비스 API의 HTTP 메소드

RESTful 웹 서비스 API는 리소스에 액세스하고 조작하기 위해 HTTP 프로토콜을 사용합니다. RESTful 웹 서비스에는 GET, PUT, POST, DELETE의 네 가지 기본 HTTP 메소드가 사용됩니다. 이러한 각 HTTP 메서드에 대해 간략하게 알려주세요.

    가져 오기:GET 메서드를 사용하면 사용자가 RESTful API의 리소스에 액세스할 수 있습니다. 그러나 변경하거나 조작할 수 없습니다. GET 메서드를 사용하면 리소스를 읽을 수만 있습니다.놓다:HTTP PUT 메서드를 사용하면 리소스를 수정하거나 상태를 변경할 수 있습니다. 또한 다른 새 리소스를 생성할 수 있습니다.게시하다:새 리소스를 만드는 데 POST 메서드를 사용할 수 있습니다.삭제:HTTP DELETE 메서드는 리소스를 삭제하는 데 사용됩니다.

RESTful 웹 서비스 API는 application/xml, application/json, application/x-www-form-urlencoded, application.x-web+xml 및 multipart/form-data와 같은 여러 데이터 형식을 지원합니다.

RESTful API 아키텍처 속성 및 제약 조건

Roy Fielding 박사는 RESTful 웹 서비스 API 개발자입니다. 다음은 RESTful API 아키텍처의 몇 가지 중요한 속성 및 제약 조건입니다.

RESTful API의 속성

  1. RESTful API는 최종 사용자에게 고성능을 제공합니다. 사용자가 링크를 클릭하면 즉각적인 결과가 제공됩니다. 그리고 개발자는 모든 서비스를 사용자에게 제공합니다.
  2. RESTful API의 또 다른 속성은 확장성입니다. RESTful API는 사용자의 증감에도 불구하고 정기적으로 서비스를 제공합니다.
  3. RESTful API에는 균일한 인터페이스가 있습니다. 모든 리소스는 해당 URI를 사용하여 식별됩니다. 따라서 이 균일한 인터페이스는 RESTful API를 단순하게 만듭니다.
  4. 다음 속성은 수정 가능성입니다. 시스템의 모든 변경은 쉽고 편안하게 이루어져야 합니다.
  5. RESTful API 아키텍처는 이식성과 안정성이 뛰어납니다.

RESTful API의 아키텍처 제약 조건

모든 RESTful 웹 서비스 API의 경우 아래 6가지 아키텍처 조건이 충족되어야 합니다.

  1. RESTful 웹 서비스 API의 첫 번째 아키텍처 제약 조건은 균일한 인터페이스를 사용해야 한다는 것입니다. 모든 RESTful API 리소스는 각각의 URI(Uniform Resource Identifier)를 사용하여 식별해야 합니다. 네 가지 HTTP 메서드인 PUT, POST, GET 및 DELETE를 통해서만 액세스하고 조작해야 합니다.
  2. RESTful API의 클라이언트와 서버는 정확한 표현을 가지고 있어야 합니다. 클라이언트는 균일한 인터페이스와 요청 수집을 처리합니다. 반면 서버는 보안, 데이터 액세스 및 워크로드 관리를 규제합니다. 서버는 모든 리소스를 보유하고 클라이언트는 서버에서 리소스를 요청합니다.
  3. RESTful 웹 서비스 API의 또 다른 아키텍처 제약 조건은 상태 비저장 작업입니다. RESTful API의 클라이언트와 서버는 상태 비저장 기능을 따라야 합니다. 모든 상태 관리 작업은 클라이언트 측에서 수행되어야 합니다.
  4. 모든 RESTful 웹 서비스 API는 캐싱을 수행해야 합니다. 캐싱이 불가능하다고 표현되면 캐싱만 해서는 안 된다.
  5. 특정 애플리케이션의 아키텍처는 여러 계층의 서버를 포함해야 합니다. 단일 레이어는 바로 옆 레이어를 제외하고 다른 레이어에 대한 정보가 없어야 합니다.
  6. 일반적으로 서버는 리소스의 정적 표현을 XML 또는 JSON 형식으로 클라이언트에 보냅니다. 또한 필요할 때 실행 코드를 클라이언트에 전송해야 합니다.

다음 부분에서는 HTTP 메서드를 사용하여 웹 서비스를 생성하는 방법을 배웁니다. 사용자 관리를 생성하기 위해 GET 및 POST의 두 가지 HTTP 메소드를 사용합니다. 다음은 사용되는 몇 가지 필수 기능입니다.

  1. 빈 POST 본문과 함께 HTTP GET 메서드를 사용하여 사용자 이름이 포함된 목록을 표시합니다. UID(Uniform Resource Identifier)를 다음과 같이 사용합니다. /사용자/서비스/사용자 .
  2. 나중에 모든 사용자의 세부 정보를 목록에 추가합니다. 이를 위해 POST 본문에 JSON 문자열과 함께 HTTP POST 메서드를 사용합니다. URI를 다음과 같이 사용하십시오. /사용자/서비스/사용자 추가 .
  3. 마지막으로 HTTP GET 메소드를 사용하여 개별 사용자의 세부 정보를 표시합니다. POST 본문을 비워두고 URI를 다음과 같이 사용하십시오. /사용자/서비스/getUser/:id .

RESTful 웹 서비스를 위한 환경 설정

RESTful 웹 서비스 작업을 위해 다음을 사용합니다. 저지 프레임워크 . 이 프레임워크는 JAX-RS 2.0 API라는 표준 사양을 구현합니다. 이 사양을 사용하여 RESTful 웹 서비스를 생성할 수 있습니다. Jersey 프레임워크로 이동하기 전에 컴퓨터 시스템에 Eclipse, Tomcat 및 JDK 환경을 설정하는 방법을 배웁니다. 정확하고 간단한 단계로 시스템에서 세 가지 환경을 모두 설정하는 방법을 설명했습니다.

JDK(Java Development Kit)를 설정하는 방법은 무엇입니까?

그만큼 자바 개발 키트(JDK) Java 코드를 실행하는 데 사용되는 필수 패키지 중 하나입니다. Java의 JDK 패키지를 사용하면 사용자가 Java 프로그램을 작성할 수 있습니다. 여기에서 JavaSE라는 이 패키지를 다운로드해야 합니다. 웹사이트 :

다운로드 후 제공된 지침에 따라 설치하십시오. 완료되면 PATH 및 JAVA_HOME 환경 변수를 'java' 및 'javac'가 있는 위치로 수정해야 합니다. 일반적으로 'java'는 java_install_dir/bin에 있고 'javac'는 'java_install_dir'에 있습니다.

Windows XP, NT 또는 2000 시스템에서 PATH 및 JAVA_HOME 환경 변수를 수정하려면 '내 컴퓨터에서 마우스 오른쪽 버튼을 클릭하고 '속성'을 클릭하십시오. '고급 탭'이 표시됩니다. 클릭하십시오. 나중에 '환경 변수'를 클릭합니다. 시스템의 'java' 및 'javac' 위치로 PATH 및 JAVA_HOME 환경 변수를 변경하고 '확인' 버튼을 클릭합니다. 환경 변수 설정이 완료되었습니다.

Linux 및 Solaris 시스템의 경우 아래 단계를 따르십시오. C 셸을 사용하고 /usr/local/jdk1.7.9_75 위치에 JavaSE 파일을 다운로드했다고 가정합니다. 아래 명령으로 '.cshrc' 파일을 업데이트합니다.

|_+_|

Eclipse IDE를 설정하는 방법은 무엇입니까?

따라야 할 첫 번째 일은 공식 웹 사이트에서 최신 Eclipse 바이너리를 다운로드하는 것입니다. 웹사이트 .

최신 Eclipse 바이너리를 다운로드한 후 시스템의 적절한 위치에 배치하십시오. C:eclipse에 있는 Windows 시스템의 Eclipse 바이너리를 찾았습니다. Linux 또는 Unix 시스템의 경우 /usr/local/eclipse 위치에서 Eclipse 바이너리를 찾습니다. 적절한 위치에 배치한 후 Eclipse 바이너리를 보관한 위치에 PATH 변수를 수정하십시오.

Eclipse를 시작하려면 eclipse.exe 파일을 더블 클릭하거나 Windows 명령 프롬프트에서 아래 명령을 입력할 수 있습니다.

|_+_|

Linux 또는 Solaris 시스템에서 Eclipse를 사용하는 경우 아래 명령을 사용하여 시작합니다.

|_+_|

모든 것이 잘되고 설정이 적절하면 응용 프로그램이 시작되고 코드를 작성하는 화면이 나타납니다.

Apache Tomcat을 설정하는 방법은 무엇입니까?

여기서는 Apache Tomcat용 시스템 환경을 설치하고 설정하는 방법을 이해합니다. 먼저 최신 Tomcat 버전을 다운로드해야 합니다. 웹사이트 .

이 최신 Tomcat 버전을 다운로드한 후 시스템의 적절한 위치에 배치합니다.

Windows 시스템의 C:apache-tomcat-7.0.59 위치에 Tomcat Apache 파일을 배치했다고 가정해 보겠습니다. Tomcat Apache 파일을 /usr/local/apache-tomcat-7.0.59 위치에 배치합니다. 리눅스 또는 솔라리스 시스템. 그런 다음 다운로드한 Tomcat Apache 파일을 보관한 위치에 CATALINA_HOME 환경 변수를 수정해야 합니다.

startup.bat 파일을 클릭하여 Windows 시스템에서 Tomcat 응용 프로그램을 시작할 수 있습니다. Tomcat 애플리케이션을 시작하기 위해 다음 명령을 사용할 수도 있습니다.

|_+_|

또는

|_+_|

Linux 또는 Solaris 시스템에서 Tomcat 응용 프로그램을 사용하는 경우 시작하려면 아래 명령 중 하나를 따라야 합니다.

|_+_|

또는

|_+_|

모든 것이 정상이면 코드를 작성하고 실행할 수 있는 화면이 나타납니다. Tomcat이 있는 모든 기본 응용 프로그램은 아래를 방문하여 사용할 수 있습니다. 웹사이트 :

Tomcat 구성 및 실행 중인 프로그램에 대한 전체 정보는 웹사이트 .

Windows 시스템에서 Tomcat 응용 프로그램을 중지하려면 다음 명령 중 하나를 입력합니다.

|_+_|

또는

|_+_|

Tomcat 응용 프로그램을 종료하기 위해 아래에 언급된 두 가지 명령 중 하나를 입력할 수 있습니다.

|_+_|

또는

|_+_|

Jersey 프레임워크 라이브러리를 설정하는 방법은 무엇입니까?

JDK, Eclipse 및 Tomcat Apache를 설정한 후 이제 Jersey Framework를 설정할 수 있습니다. Jersey Framework를 다운로드하려면 아래 지침을 순차적으로 따르십시오.

  1. 먼저 Jersey Framework를 설치할 Windows 또는 Unix와 같은 운영 체제를 결정해야 합니다. Windows 시스템을 선택하는 경우 .zip 파일을 다운로드하고 Unix 시스템의 경우 .tz 파일을 다운로드합니다.
  2. 다음 단계는 아래에서 최신 Jersey Framework 바이너리를 다운로드하는 것입니다. 웹사이트 .
  3. Windows 시스템에서 .zip 파일을 다운로드한 후 압축을 풀어야 합니다. jaxrs-ri-2.17.zip 파일을 다운로드했다고 가정합니다. 이 파일의 압축을 풀면 E:jaxrs-ri-2.17jaxrs-ri 위치에 디렉토리 구조가 제공됩니다.
  4. 모든 Jersey 라이브러리는 C:jaxrs-ri-2.17jaxrs-rilib 디렉토리에 있으며 종속성은 C:jaxrs-ri-2.17jaxrs-riext에 있습니다.
  5. 나중에 Jersey 라이브러리가 있는 C:jaxrs-ri-2.17jaxrs-rilib 디렉토리에 CLASSPATH 변수를 수정합니다. Eclipse 애플리케이션을 사용하는 경우 Jersey 프레임워크에 대한 CLASSPATH 변수를 수정할 필요가 없음을 기억하십시오.

이제 RESTful 웹 서비스를 위한 환경을 설정하는 방법을 알게 되었습니다. 위의 모든 단계를 수행하면 Jersey 예제를 작성할 준비가 됩니다.

RESTful 첫 번째 예 – 저지(JAX-RS)

Java, Tomcat Apache, Eclipse 및 Jersey Framework 환경을 설정한 후 RESTful API를 사용하여 웹 애플리케이션 빌드를 시작할 수 있습니다. RESTful API로 프로그램을 작성하는 방법에 대한 정확한 아이디어를 얻기 위해 Jersey 프레임워크에서 한 가지 예를 살펴보겠습니다. 프로그램을 성공적으로 실행하려면 아래에 언급된 단계를 순차적으로 따라야 합니다.

1단계: 자바 프로젝트 생성

Eclipse IDE를 사용하여 Java 프로젝트를 생성합니다. 여기서는 Dynamic Web Project를 생성합니다. 아래 단계는 다이나믹 웹 개발 Eclipse IDE에서 프로젝트.

  1. 시스템에서 Eclipse 애플리케이션을 시작하십시오. 파일 옵션을 클릭하고 새로 만들기를 클릭한 다음 새 프로젝트를 선택합니다.
  2. 나중에 마법사 목록에서 마법사 동적 웹 프로젝트를 선택합니다.
  3. 마법사를 선택한 후 프로젝트에 원하는 이름을 지정합니다. FirstRest예 .
  4. 마법사 창에서 프로젝트 이름을 저장할 때 프로젝트 탐색기로 이동하면 프로젝트 이름이 표시됩니다.

2단계: 필요한 라이브러리 추가

프로젝트를 생성하고 특정 이름으로 저장한 후 Jersey Framewoek의 라이브러리와 종속성을 프로젝트에 추가해야 합니다. 저지의 zip 폴더에서 생성된 프로젝트의 WEB-INF/lib 디렉토리에 복사할 jar 파일 이름을 나열했습니다.

  • jaxrs-ri-2.17jaxrs-riapi
  • jaxrs-ri-2.17jaxrs-riext
  • jaxrs-ri-2.17jaxrs-rilib

프로젝트에 언급된 위의 jar 파일을 추가하려면 프로젝트를 마우스 오른쪽 버튼으로 클릭하고, FirstRest예 . 빌드 경로 옵션을 클릭한 다음 빌드 경로 구성으로 이동하십시오. 여기에서 Java 빌드 경로를 표시하는 창이 표시됩니다. 또한 라이브러리 메뉴 아래에 JAR 추가 버튼이 표시됩니다. WEB-INF/lib 디렉토리에 jar 파일을 추가하십시오.

3단계: 소스 파일 생성

Eclipse IDE에서 FirstRestExample이라는 프로젝트를 만들었습니다. 이제 이 프로젝트의 소스 파일을 만들어야 합니다. 소스 파일을 만들려면 먼저 com.restexample과 같은 패키지를 만들어야 합니다. 패키지 탐색기로 이동하여 src 옵션을 마우스 오른쪽 버튼으로 클릭합니다. 새로 만들기 옵션을 찾을 수 있습니다. 그것을 클릭하고 나중에 패키지 옵션을 클릭하십시오.

여기에서 com.restexample 패키지 아래에 세 개의 다른 파일을 만들어야 합니다. 파일 이름을 EmployeeService.java, Employee.java 및 EmployeeDao.java로 지정하겠습니다. 세 개의 파일에서 com.retexmple 패키지 아래에 생성했으며 코드를 작성해야 합니다. 먼저 Employee.java 파일에 코드를 작성합니다.

직원.자바

|_+_|

직원다오.자바

|_+_|

직원 서비스.자바

|_+_|

위의 EmployeeService.java 파일에서 웹 서비스의 경로를 지정하기 위해 @Path 주석을 사용했음을 기억해야 합니다. 또한 @Path 주석을 사용하여 특정 웹 서비스 메서드에 대한 경로도 설정했습니다.

4단계: Web.xml 파일 만들기

마지막으로 Web.xml 파일을 생성해야 합니다. Web.xml 파일의 주요 목적은 개발 중인 애플리케이션에 Jersey 프레임워크 서블릿을 할당하는 것입니다.

web.xml

|_+_|

5단계: 프로그램 컴파일 및 실행

위에서 언급한 4개의 파일을 모두 작성했으면 이제 광고 실행 프로그램을 컴파일할 준비가 된 것입니다. 우리는 위의 모든 프로그램을 작성하기 위해 Eclipse IDE를 사용했습니다. 따라서 위의 응용 프로그램을 war 파일로 내보내야 합니다. 나중에 Tomcat Apache 도구에서 이 war 파일을 컴파일하고 실행해야 합니다.

Eclipse IDE에서 war 파일을 생성하는 방법을 아래에서 보여드리겠습니다.

  • Eclipse IDE에서 파일 옵션으로 이동하여 내보내기 -> 우리 -> 전쟁 파일을 클릭합니다. 거기에서 프로젝트를 선택해야 합니다. FirstRest예 및 대상 폴더.
  • 나중에 FirstRestExample.war 파일을 톰캣 설치 디렉토리 옵션의 웹앱 디렉토리 . 그리고 Tomcat 애플리케이션을 시작합니다.

War 파일을 Tomcat의 webapps 디렉토리에 배치한 후 애플리케이션을 실행할 수 있습니다. 우리는 Chrome 확장 프로그램을 사용할 것입니다. 우편 집배원 , 애플리케이션 테스트용. 다음 단계는 모든 직원을 POSTMAN에 배치하는 것입니다. 이를 위해 아래 코드 줄을 사용하십시오.

|_+_|

Tomcat Apache에서 위 코드 행을 사용하려면 HTTP GET 메소드를 사용하십시오. 다음은 준비된 첫 번째 웹 서비스 응용 프로그램입니다.

RESTful 웹 서비스 API의 메시지

RESTful API에서 클라이언트와 서버는 HTTP 프로토콜을 사용하여 서로 통신합니다. 통신은 클라이언트가 서버에 HTTP 요청을 보내고 서버가 HTTP 응답으로 클라이언트에 응답할 때 발생합니다. HTTP 프로토콜을 사용하는 클라이언트와 서버 간의 통신을 메시징이라고 합니다. 단일 HTTP 메시지에는 메시지 데이터와 메타데이터가 포함됩니다. 메타데이터는 메시지 정보입니다.

이제 RESTful 웹 서비스 API에서 HTTP Request와 HTTP Response를 살펴보자.

HTTP 요청

클라이언트는 HTTP 요청을 서버로 보냅니다. 서버에서 리소스를 요청합니다. HTTP 요청, 동사, URI, HTTP 버전, 요청 헤더 및 요청 본문에는 5가지 기본 부분이 포함됩니다. 다음은 HTTP 요청 형식입니다.

평안한

HTTP 요청의 각 부분을 간략하게 설명하겠습니다.

    동사:HTTP 요청의 동사는 GET, POST, PUT 및 DELETE의 네 가지 HTTP 메서드를 의미합니다.URI(Uniform Resource Identifier):HTTP 요청의 다음 부분은 URI(Uniform Request Identifier)입니다. URI는 각 리소스를 고유하게 식별합니다.HTTP 버전:HTTP 요청의 세 번째 부분은 HTTP 버전입니다. 예를 들어 HTTP v1.1에서 v1.1은 버전입니다.요청 헤더:요청 헤더에는 메시지의 메타데이터가 포함됩니다. 요청 헤더의 메타데이터는 키-값 쌍에 있습니다. 클라이언트 유형, 캐시 설정, 메시지 형식 등과 같은 정보를 수집할 수 있습니다.요청 본문:HTTP 요청의 요청 본문은 리소스의 표현을 의미합니다.

HTTP 응답

서버는 클라이언트로부터 HTTP 요청을 받으면 HTTP 응답으로 클라이언트에 응답합니다. HTTP 응답은 응답 코드, HTTP 버전, 응답 헤더 및 응답 본문의 네 가지 중요한 부분을 포함합니다. 다음은 HTTP 응답 형식입니다.

img 617dd1cb36593

여기에서 각 HTTP 응답 부분에 대해 논의해 보겠습니다.

    응답 코드:

응답 코드는 상태라고도 합니다. 클라이언트가 서버에서 리소스를 요청하면 응답 코드에 상태가 표시됩니다. 상태가 404이면 리소스를 찾을 수 없습니다. 응답이 정상이면 상태는 200입니다.

    HTTP 버전:

HTTP 응답의 두 번째 부분은 HTTP 버전입니다. 예를 들어 HTTP v1.1에서 v1.1은 버전입니다.

    응답 헤더:

헤더에는 키-값 쌍의 형태로 HTTP 응답 메시지의 메타데이터가 포함됩니다. 서버 유형, 콘텐츠 길이, 응답 데이터 등과 같은 정보가 있을 수 있습니다.

    응답 본문:

응답 본문에는 리소스의 표현이 포함됩니다.

RESTful 웹 서비스 API의 위 예에서 우리는 http://localhost:8080/FirstRestExample/rest/EmployeeService/employees .

POSTMAN에서 HTTP GET 메서드를 사용합니다. GET 메서드를 사용하여 요청을 보내면 다음과 같은 XML 메시지를 받게 됩니다. XML 응답을 보려면 미리보기 버튼을 클릭해야 합니다.

|_+_|

RESTful 웹 서비스 API의 리소스

RESTful 웹 서비스 API에서 모든 콘텐츠는 리소스로 취급됩니다. 클라이언트는 리소스를 요청하고 서버는 클라이언트가 요청한 특정 리소스에 대한 액세스를 제공합니다. 액세스 권한을 부여한 후 클라이언트는 리소스를 수정하거나 변경할 수 있습니다. 리소스는 HTML 페이지, 이미지, 텍스트 파일 또는 비즈니스 데이터일 수 있습니다.

REST 아키텍처의 각 리소스에는 고유 번호가 있습니다. 이 고유 번호를 URI(Uniform Resource Identifier)라고 합니다. 일반적으로 REST 아키텍처의 리소스는 XML 또는 JSON 형식을 사용하여 표현됩니다. 이제 REST 아키텍처의 리소스 표현을 살펴보겠습니다.

REST 아키텍처의 리소스 표현

REST 아키텍처의 리소스는 XML 또는 JSON 형식으로 표시됩니다. REST 리소스를 데이터베이스의 엔터티 또는 개체 지향 프로그래밍의 개체로 취급할 수 있습니다. 첫째, 리소스는 URI(Uniform Resource Identifier)를 사용하여 식별됩니다. 나중에 자원을 나타내는 표준 형식이 결정됩니다. 클라이언트가 리소스를 요청하면 서버는 클라이언트가 지정한 형식으로 리소스를 전달합니다.

위의 RESTful 예제에서 리소스로 '직원'이 있습니다. '직원' 리소스가 XML 형식을 사용하여 표현되는 방법을 살펴보겠습니다.

|_+_|

이제 동일한 '직원' 리소스를 JSON 형식으로 묘사하겠습니다.

|_+_|

REST 아키텍처에서는 모든 형식으로 리소스를 나타낼 수 있습니다. RESTful 웹 서비스 API에서 한 클라이언트는 XML 형식의 리소스를 요청하고 다른 클라이언트는 JSON 형식의 동일한 리소스를 요청하는 경우가 있습니다. 리소스 표현에서 유일하게 중요한 것은 클라이언트가 이해할 수 있는 형식으로 표현되어야 한다는 것입니다.

리소스가 어떤 형식으로든 표시될 때 고려해야 할 몇 가지 전제 조건이 있습니다. 리소스 형식은 이해할 수 있고 완전하며 연결 ​​가능해야 합니다. REST 아키텍처의 클라이언트와 서버는 리소스 표현 형식을 빠르게 승인해야 합니다. 자원을 나타내기 위해 선택한 모든 양식은 완전한 자원 정보를 제공해야 합니다. 리소스 표현 형식은 다른 리소스에 대한 링크를 허용해야 합니다.

대부분의 개발자는 REST 아키텍처에서 리소스를 나타내기 위해 JSON 또는 XML 형식을 사용합니다. 오늘날 JSON 또는 XML 데이터를 수정하는 데 사용할 수 있는 도구가 많이 있습니다.

RESTful 웹 서비스 API에서 주소 지정

REST 아키텍처에서 주소 지정은 서버에 있는 리소스를 찾는 것을 의미합니다. 리소스는 URI(Uniform Resource Identifier)로 식별된다는 것을 알고 있습니다. UID(Uniform Resource Identifier)의 형식은 다음과 같습니다.

////

URI는 서버에서 특정 리소스를 찾습니다. 위의 예에서 URI는

|_+_|

위의 URI에는 HTTP GET 메서드를 사용했습니다.

URI가 어떻게 생성되는지 궁금할 것입니다. REST 아키텍처의 모든 리소스에 대한 URI를 구축하는 데 있어 몇 가지 간단한 규칙을 안내합니다.

  1. 웹 서비스에서 리소스를 정의할 때 항상 복수형을 사용하십시오. 위의 RESTful 웹 애플리케이션 예제에서는 'users' 리소스를 생성했습니다.
  2. 리소스 이름에 공백이나 %, $, @ 등과 같은 특수 기호가 포함되지 않아야 합니다. 리소스 이름에 하이픈(-) 또는 밑줄(_)을 사용할 수 있습니다. 예를 들어, 올바른 리소스 이름은 Effective_employees가 아니라 effective@employees입니다.
  3. RESTful 웹 서비스에서 URI는 대소문자를 구분하지 않습니다. 그러나 URI를 소문자로 유지하는 것이 항상 더 좋습니다.
  4. 리소스에 대한 작업을 수행하기 위해 HTTP 동사 또는 메서드를 사용하는지 확인하십시오. 위의 RESTful 애플리케이션에서는 HTTP GET 메소드를 사용했습니다.
  5. 웹 서비스는 공공 서비스이므로 URI는 공개적으로 게시되어야 합니다.

직원을 가져오기 위한 좋은 URI와 나쁜 URI의 예를 살펴보겠습니다.

불량한 URI

|_+_|

좋은 URI

|_+_|

RESTful 웹 서비스 API의 Java(JAX-RS)

JAX-RS 자카르타 RESTful 웹 서비스를 의미합니다. 이전에는 RESTful 웹 서비스용 Java API로 알려져 있었습니다. JAX-RS는 사용자가 REST 아키텍처를 기반으로 웹 서비스를 생성할 수 있도록 하는 Java 기반 API입니다. 최신 JAX-RS 버전은 2013년에 릴리스된 2.0입니다. 이 Java 기반 API는 Java SE 5의 주석을 사용하므로 웹 서비스의 개발 및 배포를 보다 쉽게 ​​관리할 수 있습니다.

JAX-RS 사양

다음은 리소스를 웹 서비스 리소스로 매핑하기 위해 일반적으로 사용되는 몇 가지 주석입니다.

    @가져 오기:JAX-RS의 이 사양은 리소스를 가져오는 데 사용됩니다.@길:@Path는 웹 서비스에 포함된 클래스나 메소드의 경로를 의미한다.@삭제:@DELETE 리소스는 특정 리소스를 삭제합니다.@게시하다:JAX-RS의 위 스펙은 새 자원을 작성합니다.@놓다:이 JAX-RS 스펙은 기존 자원을 업데이트하는 데 사용됩니다.@소비:@Consumes JAX-RS 사양은 HTTP 요청의 유형을 나타냅니다.@머리:JAX-RS의 또 다른 HTTP 메소드는 @HEAD로 메소드의 사용 가능 여부에 대한 정보를 제공합니다.@QueryParam:위의 사양은 쿼리 매개 변수와 메서드에 전달된 매개 변수를 결합하는 데 사용됩니다.@프로듀스:@Produces 사양은 HTTP 응답의 유형을 표시합니다.@경로파람:위의 JAX-RS 스펙은 경로 값을 메소드에 전달된 매개변수와 결합하는 데 사용됩니다.@쿠키파람:@CookieParam은 쿠키를 메소드에 전달된 매개변수와 결합합니다.@매트릭스파람:이 JAX-RS 사양은 HTTP 매트릭스 매개변수와 메소드에 전달되는 매개변수를 결합합니다.@FormParam:양식 값은 @FormParam을 사용하여 메소드에 전달된 매개변수와 결합됩니다.@HeaderParam:HTTP 헤더는 @HeaderParam을 사용하여 메서드에 전달된 매개 변수와 바인딩됩니다.@문맥:@Context는 리소스 컨텍스트를 의미합니다.@기본값:위의 JAX-RS 스펙은 메소드에 전달된 매개변수를 기본값으로 지정합니다.

상태 비저장 및 RESTful 웹 서비스 API 캐싱

무국적자

Stateless는 클라이언트 상태가 서버에 없어야 함을 의미합니다. 클라이언트는 컨텍스트를 서버로 보냅니다. 클라이언트로부터 컨텍스트를 수신하면 서버는 컨텍스트를 저장하고 추가 클라이언트의 요청에 사용합니다. 예를 들어 클라이언트는 세션 식별자를 서버로 보냅니다. 따라서 서버는 세션 식별을 위해 이를 보관합니다.

장점:

다음은 RESTful 웹 서비스 API에서 상태 비저장의 몇 가지 중요한 이점입니다.

  • 상태 비저장 속성을 사용하여 웹 서비스는 각 메서드 요청을 개별적으로 처리합니다.
  • 서버는 클라이언트의 상태나 이전 작업을 보유하지 않습니다. 따라서 응용 프로그램 설계를 더 단순화합니다.
  • RESTful 웹 서비스는 HTTP 프로토콜에서 가상으로 처리됩니다.

단점:

  • 서버에는 클라이언트의 상태가 포함되어 있지 않기 때문에 웹 서비스는 클라이언트의 모든 요청에서 더 많은 데이터를 필요로 합니다.

캐싱

클라이언트는 응답 측면에서 서버의 일부 리소스를 보유합니다. 따라서 클라이언트는 동일한 리소스에 대해 서버를 반복적으로 요청할 필요가 없습니다. 이것을 캐싱이라고 합니다. 클라이언트는 서버에서 제공하는 특정 리소스의 캐싱 정보를 기반으로 해당 리소스를 특정 시간 동안 캐시할지 아니면 캐시하지 않을지를 결정합니다.

Public, Private, max-age, no-cache/no-store 및 must-revalidate의 5가지 중요한 부분으로 구성된 캐시 제어 헤더가 있습니다. 아래에서 각 부분에 대한 설명을 살펴보겠습니다.

    공공의:모든 구성 요소는 공용 리소스를 캐시할 수 있습니다.사적인:아무도 리소스를 캐시할 수 없습니다. 클라이언트와 서버만 리소스를 캐시할 수 있습니다.최대 연령:max-age 요소는 초 단위로 계산됩니다. 리소스 캐싱이 유효한 시간(초)을 의미합니다. max-age 시간이 끝나면 클라이언트는 리소스를 다시 요청해야 합니다.캐시 없음/저장 없음:클라이언트가 리소스를 캐시할 수 없습니다.재검증해야 함:서버는 캐싱을 위한 최대 사용 시간이 완료되면 리소스의 유효성을 다시 확인해야 합니다.

클라이언트의 캐시를 구성하기 위해 서버 응답에는 다음 헤더가 포함됩니다.

    날짜:리소스 생성 날짜 및 시간은 Date 헤더에 표시됩니다.캐시 제어:캐시 제어 헤더는 캐싱을 모니터링합니다.나이:나이는 초 단위로 표시됩니다. 서버에서 리소스를 받는 시간입니다.마지막 수정:이 헤더는 리소스가 마지막으로 업데이트된 날짜와 시간을 표시합니다.만료:이 헤더는 캐싱의 만료 날짜 및 시간을 의미합니다.

RESTful API에서 HTTP 메소드 및 해당 작업

이전 섹션에서 우리는 HTTP 메소드와 그 사용법을 보았습니다. 이 세그먼트는 REST 아키텍처에서 HTTPS 메서드, 해당 작업 및 작업 유형을 관찰해야 합니다.

    가져 오기:

위의 RESTful 애플리케이션 예제에서 GET HTTP 메소드는 직원 목록을 가져오는 데 사용됩니다. 아래와 같이 GET 메서드에 대한 URI를 사용했습니다.

|_+_|

HTTP GET 메서드는 직원 목록을 가져옵니다. 따라서 읽기 전용 작업 유형이 있습니다.

Id 1 직원을 검색하기 위해 GET 메서드를 사용할 수도 있습니다. ID 1 직원을 검색하기 위한 URI는,

|_+_|

이 작업도 읽기 전용 유형입니다.

    게시하다:

RESTful 애플리케이션 예제에서는 ID가 2인 직원을 삽입하기 위해 HTTP POST 메서드를 사용했습니다. ID 2에 대한 직원을 삽입하기 위한 URI는 다음과 같습니다.

|_+_|

위의 작업 유형은 멱등성이 아닙니다.

    삭제:

HTTP DELETE 메소드를 사용하여 ID가 ​​1인 직원을 삭제할 수 있습니다. 다음은 ID가 1인 직원을 삭제하기 위한 URI입니다.

|_+_|

DELETE 작업은 멱등원 유형입니다.

    머리:

REST 아키텍처의 HEAD 메서드는 HTTP 헤더를 반환하는 데 사용됩니다. HTTP 본문을 제공하지 않습니다. 위의 Employee 예에서는 아래 URI를 사용할 수 있습니다.

|_+_|

이 작업은 읽기 전용 유형입니다.

    놓다:

위의 REST Employee 애플리케이션에서 Id 2로 직원을 업데이트하기 위해 HTTP PUT 메소드를 사용할 수 있습니다. Id 2로 직원을 업데이트하려면 아래 URI를 사용하십시오.

|_+_|
    옵션:

HTTP OPTIONS 메서드를 사용하면 웹 서비스에서 지원되는 모든 작업을 나열할 수 있습니다. 이 작업에 다음 URI를 사용할 수 있습니다.

|_+_|

OPTIONS 작업은 읽기 전용 유형입니다.

위의 HTTP 메서드와 해당 작업에서 GET 작업이 읽기 전용 유형이라는 결론을 내릴 수 있습니다. DELETE 및 PUT 작업은 멱등 유형입니다. 이 두 작업의 결과는 여러 번 수행하더라도 동일하게 유지됩니다.

결론

RESTful API는 HTTP 메서드를 사용하여 데이터에 액세스하고 구성하는 REST 아키텍처 기반 API입니다. REST 아키텍처의 모든 데이터는 리소스로 간주됩니다. RESTful API를 배우고 싶다면 이 게시물이 완벽한 가이드가 될 것입니다.

RESTful 웹 서비스 API가 무엇인지, 어떻게 작동하는지, REST 아키텍처에서 사용되는 HTTP 메소드, REST 아키텍처의 속성 및 제약 조건을 살펴보았습니다. 나중에 RESTful API에 대한 환경 설정을 설명했습니다. RESTful API 환경 설정에서 JDK 환경, Tomcat Apache, Eclipse IDE, Jersey Framework를 설정했습니다. 이 튜토리얼에서 간단한 RESTful 애플리케이션 예제를 관찰할 수 있습니다.

다음으로 메시지, 상태 비저장, 캐싱, 리소스 및 주소 지정과 같은 RESTful 웹 서비스 API의 여러 요소를 다루었습니다. 우리는 또한 논의했습니다 자바 JAX-RS 및 해당 사양. 마지막으로 HTTP 메서드와 URI 및 작업 유형이 있는 작업을 보았습니다.