RESTful 웹 서비스 튜토리얼: 예시가 포함된 REST API란?
Restful 웹 서비스란 무엇입니까?
편안한 웹 서비스 REST 아키텍처를 기반으로 구축된 가볍고 유지 관리가 가능하며 확장 가능한 서비스입니다. Restful 웹 서비스는 호출하는 클라이언트에 안전하고 균일하며 상태 없는 방식으로 애플리케이션의 API를 노출합니다. 호출하는 클라이언트는 Restful 서비스를 사용하여 미리 정의된 작업을 수행할 수 있습니다. REST의 기본 프로토콜은 HTTP입니다. REST는 REpresentational State Transfer의 약자입니다.
RESTful 핵심 요소
REST 웹 서비스는 출시 이후 정말 많은 발전을 이루었습니다. 2002년에 웹 컨소시엄은 WSDL 및 SOAP 웹 서비스의 정의를 발표했습니다. 이는 웹 서비스 구현 방법에 대한 표준을 형성했습니다.
2004년에 웹 컨소시엄은 RESTful이라는 추가 표준의 정의도 발표했습니다. 지난 몇 년 동안 이 표준은 꽤 인기를 끌었습니다. 그리고 Facebook과 Twitter를 포함한 전 세계의 많은 인기 웹사이트에서 사용되고 있습니다.
REST는 특정 환경에 있는 리소스에 액세스하는 방법입니다. 예를 들어 중요한 문서나 사진, 비디오를 호스팅할 수 있는 서버가 있을 수 있습니다. 이 모든 것은 자원의 예입니다. 웹 브라우저에 이러한 리소스가 필요한 경우 클라이언트는 이러한 리소스에 액세스하기 위해 서버에 요청을 보내야 합니다. 이제 REST 서비스는 이러한 리소스에 액세스할 수 있는 방법을 정의합니다.
RESTful 구현의 핵심 요소는 다음과 같습니다.
- 자료 – 첫 번째 핵심 요소는 리소스 자체입니다. 서버의 웹 애플리케이션에 여러 직원의 기록이 있다고 가정해 보겠습니다. 웹 애플리케이션의 URL이 다음과 같다고 가정해 보겠습니다. https://demo.guru99.com. 이제 REST 서비스를 통해 직원 기록 리소스에 액세스하려면 다음 명령을 실행할 수 있습니다. https://demo.guru99.com/employee/1 – 이 명령은 웹 서버에 직원 번호가 1인 직원의 세부 정보를 제공하라고 지시합니다.
- 요청 동사 – 리소스로 수행하려는 작업을 설명합니다. 브라우저는 데이터를 가져오려는 엔드포인트에 지시하기 위해 GET 동사를 발행합니다. 그러나 POST, PUT 및 DELETE와 같은 다른 동사도 사용할 수 있습니다. 그래서 예시의 경우 https://demo.guru99.com/employee/1 웹 브라우저는 실제로 직원 기록의 세부 정보를 얻으려고 GET 동사를 실행합니다.
- 요청 헤더 – 이는 요청과 함께 전송된 추가 지침입니다. 이는 필요한 응답 유형이나 권한 부여 세부 정보를 정의할 수 있습니다.
- 요청 본문 – 데이터는 요청과 함께 전송됩니다. 데이터는 일반적으로 REST 웹 서비스에 POST 요청이 이루어질 때 요청에서 전송됩니다. POST 호출에서 클라이언트는 실제로 REST 웹 서비스에 서버에 리소스를 추가하고 싶다고 말합니다. 따라서 요청 본문에는 서버에 추가해야 하는 리소스의 세부 정보가 포함됩니다.
- 응답 본문 - 답변 본문입니다. 따라서 RESTful API 예제에서 요청을 통해 웹 서버에 쿼리한다면 https://demo.guru99.com/employee/1 웹 서버는 응답 본문에 직원의 모든 세부 정보가 포함된 XML 문서를 반환할 수 있습니다.
- 응답 상태 코드 – 이 코드는 웹 서버의 응답과 함께 반환되는 일반 코드입니다. 클라이언트에 응답을 반환할 때 오류가 없으면 일반적으로 반환되는 코드 200이 그 예입니다.
편안한 방법
아래 다이어그램은 대부분 모든 동사(POST, GET, PUT 및 DELETE)와 해당 동사의 의미에 대한 REST API 예를 보여줍니다.
RESTful 웹 서비스가 해당 위치에 정의되어 있다고 가정해 보겠습니다. https://demo.guru99.com/employee . 클라이언트가 이 웹 서비스에 요청할 때 GET, POST, DELETE 및 PUT의 일반 HTTP 동사를 지정할 수 있습니다. 다음은 클라이언트가 해당 동사를 보낸 경우 발생하는 상황입니다.
- POST – RESTful 웹 서비스를 사용하여 새 직원을 생성하는 데 사용됩니다.
- 바로 – RESTful 웹 서비스를 사용하여 모든 직원의 목록을 가져오는 데 사용됩니다.
- PUT – RESTful 웹 서비스를 사용하여 모든 직원을 업데이트하는 데 사용됩니다.
- 삭제 – RESTful 서비스를 사용하는 모든 직원을 삭제하는 데 사용됩니다.
단일 레코드의 관점에서 살펴보겠습니다. 사원 번호가 1인 사원 레코드가 있다고 가정해 보겠습니다.
다음 동작은 각각의 의미를 갖습니다.
- POST – 이미 생성된 직원 1의 데이터를 가져오는 중이므로 해당되지 않습니다.
- 바로 – 이것은 RESTful 웹 서비스를 사용하여 직원 번호가 1인 직원의 세부 정보를 가져오는 데 사용됩니다.
- PUT – 이것은 RESTful 웹 서비스를 사용하여 직원 번호를 1로 하여 직원의 세부 정보를 업데이트하는 데 사용됩니다.
- 삭제 – 이것은 직원 번호가 1인 직원의 세부 정보를 삭제하는 데 사용됩니다.
왜 편안한가?
Restful은 대체로 다음과 같은 이유로 인기를 얻었습니다.
1. 이기종 언어 및 환경 – 이는 우리가 본 것과 동일한 근본적인 이유 중 하나입니다. SOAP 뿐만 아니라.
- 다양한 프로그래밍 언어로 구축된 웹 애플리케이션이 서로 통신할 수 있도록 합니다.
- Restful 서비스의 도움으로 이러한 웹 애플리케이션은 다양한 환경에 상주할 수 있으며 일부는 Windows, 다른 것들은 Linux에 있을 수 있습니다.
하지만 결국 환경이 어떻든 간에 서로 대화할 수 있어야 한다는 결과는 항상 같아야 합니다. Restful 웹 서비스는 다양한 프로그래밍 언어와 플랫폼을 기반으로 구축된 애플리케이션에 이러한 유연성을 제공하여 서로 통신합니다.
아래 그림은 Facebook, Twitter, Google과 같은 다른 애플리케이션과 통신해야 하는 웹 애플리케이션의 예를 보여줍니다.
이제 클라이언트 애플리케이션이 Facebook, Twitter 등과 같은 사이트에서 작동해야 한다면 아마도 Facebook, Google 및 Twitter가 구축된 언어가 무엇인지, 그리고 어떤 플랫폼에 구축되었는지 알아야 할 것입니다.
이를 기반으로 웹 애플리케이션의 인터페이스 코드를 작성할 수 있지만 이는 악몽이 될 수 있습니다.
Facebook, Twitter 및 Google은 Restful 웹 서비스 형태로 기능을 공개합니다. 이를 통해 모든 클라이언트 애플리케이션이 REST를 통해 이러한 웹 서비스를 호출할 수 있습니다.
2. 장치의 이벤트 – 요즘에는 모든 일이 제대로 진행되어야 합니다. 모바일 모바일 장치, 노트북, 자동차 시스템 등 모든 장치에 적용됩니다.
이런 기기에서 일반 웹 애플리케이션과 통신하기 위해 애플리케이션을 코딩하려고 시도하는 데 얼마나 많은 노력이 드는지 상상할 수 있나요? 다시 말하지만 Restful API는 이 작업을 더 간단하게 만들 수 있습니다. 1번 항목에서 언급했듯이, 실제로 기기의 기본 계층이 무엇인지 알 필요가 없기 때문입니다.
3. 드디어 클라우드의 이벤트 – 모든 것이 클라우드로 이동하고 있습니다. 애플리케이션은 다음과 같은 클라우드 기반 시스템으로 천천히 이동하고 있습니다. Azure or Amazon. Azure 그리고 Amazon Restful 아키텍처를 기반으로 많은 API를 제공합니다. 따라서 이제 애플리케이션은 클라우드와 호환되는 방식으로 개발되어야 합니다. 따라서 모든 클라우드 기반 아키텍처는 REST 원칙에 따라 작동하므로 클라우드 기반 서비스를 최대한 활용하기 위해 웹 서비스를 REST 서비스 기반 아키텍처에서 프로그래밍하는 것이 더 합리적입니다.
평안한 Archi강의
RESTful 또는 REST 스타일로 간주되는 애플리케이션 또는 아키텍처는 다음과 같은 특징을 갖습니다.
1. 상태와 기능은 분산 리소스로 구분됩니다. – 이는 GET, POST, PUT 또는 DELETE의 일반 HTTP 명령을 통해 모든 리소스에 액세스할 수 있어야 함을 의미합니다. 따라서 누군가 서버에서 파일을 가져오려면 GET 요청을 발행하고 파일을 가져올 수 있어야 합니다. 서버에 파일을 저장하려면 POST 또는 PUT 요청을 실행할 수 있어야 합니다. 마지막으로 서버에서 파일을 삭제하려는 경우 DELETE 요청을 실행할 수 있습니다.
2. 아키텍처는 클라이언트/서버, 무상태, 계층화이며 캐싱을 지원합니다.
- 클라이언트-서버는 서버가 애플리케이션을 호스팅하는 웹 서버가 되고, 클라이언트는 웹 브라우저만큼 간단할 수 있는 전형적인 아키텍처입니다.
- Stateless는 애플리케이션의 상태가 REST에서 유지되지 않음을 의미합니다. 예를 들어 DELETE 명령을 사용하여 서버에서 리소스를 삭제하면 삭제 정보가 다음 요청에 전달될 것이라고 기대할 수 없습니다.
리소스가 삭제되었는지 확인하려면 GET 요청을 실행해야 합니다. GET 요청은 먼저 서버의 모든 리소스를 가져오는 데 사용됩니다. 그런 다음 리소스가 실제로 삭제되었는지 확인해야 합니다.
RESTFul 원칙 및 제약 조건
REST 아키텍처는 아래에 자세히 설명된 몇 가지 특성을 기반으로 합니다. 모든 RESTful 웹 서비스는 RESTful이라고 불리기 위해 아래 특성을 준수해야 합니다. 이러한 특성은 RESTful 기반 서비스로 작업할 때 따라야 하는 디자인 원칙이라고도 합니다.
이는 REST 기반 아키텍처의 가장 기본적인 요구 사항입니다. 즉, 서버는 클라이언트에 필요한 기능을 제공하는 RESTful 웹 서비스를 보유해야 합니다. 클라이언트는 서버의 웹 서비스에 요청을 보냅니다. 서버는 요청을 거부하거나 이를 준수하여 클라이언트에 적절한 응답을 제공합니다.
- 무국적자
상태 비저장이라는 개념은 필요한 모든 정보가 서버에 제공되는지 확인하는 것이 클라이언트의 몫이라는 것을 의미합니다. 이는 서버가 응답을 적절하게 처리할 수 있도록 하기 위해 필요합니다. 서버는 클라이언트의 요청 사이에 어떤 종류의 정보도 유지해서는 안 됩니다. 이는 매우 간단하고 독립적인 질문-답변 순서입니다. 클라이언트가 질문을 하면 서버는 이에 적절하게 대답합니다. 고객은 또 다른 질문을 할 것입니다. 서버는 이전 질문-답변 시나리오를 기억하지 않으며 독립적으로 새 질문에 대답해야 합니다.
- 캐시
캐시 개념은 마지막 지점에서 설명한 상태 비저장 문제를 해결하는 데 도움이 됩니다. 각 서버 클라이언트 요청은 본질적으로 독립적이므로 때로는 클라이언트가 서버에 동일한 요청을 다시 요청할 수도 있습니다. 이는 과거에 이미 요청한 경우에도 마찬가지입니다. 이 요청은 서버로 전달되고 서버는 응답을 제공합니다. 이로 인해 네트워크 전체의 트래픽이 증가합니다. 캐시는 이미 서버로 전송된 요청을 저장하기 위해 클라이언트에 구현된 개념입니다. 따라서 클라이언트가 동일한 요청을 하면 서버로 이동하는 대신 캐시로 이동하여 필요한 정보를 얻습니다. 이렇게 하면 클라이언트에서 서버로 오가는 네트워크 트래픽의 양이 절약됩니다.
- 계층화 시스템
계층화된 시스템의 개념은 클라이언트와 RESTFul 웹 서비스를 호스팅하는 실제 서버 사이에 미들웨어 계층과 같은 추가 계층을 삽입할 수 있다는 것입니다. (미들웨어 계층은 모든 비즈니스 로직이 생성되는 곳입니다. 이는 추가 서비스일 수 있습니다. 클라이언트가 웹 서비스를 호출하기 전에 상호 작용할 수 있도록 만들어졌습니다.) 하지만 이 레이어의 도입은 클라이언트와 서버 간의 상호 작용을 방해하지 않도록 투명하게 이루어져야 합니다.
- 인터페이스/균일 계약
이는 RESTful 웹 서비스가 작동하는 방식에 대한 기본 기술입니다. RESTful은 기본적으로 HTTP 웹 계층에서 작동하며 아래 핵심 동사를 사용하여 서버의 리소스와 작업합니다.
- POST – 서버에 리소스를 생성하려면
- GET – 서버에서 리소스를 검색하려면
- PUT – 리소스 상태를 변경하거나 업데이트하려면
- DELETE – 서버에서 리소스를 제거하거나 삭제하려면
ASP.NET에서 첫 번째 Restful 웹 서비스 만들기
이제 이 REST API 자습서에서는 ASP.NET에서 Restful 웹 서비스를 만드는 방법을 배웁니다.
웹 서비스는 다양한 언어로 생성될 수 있습니다. 많은 통합 개발 환경을 사용하여 REST 기반 서비스를 만들 수 있습니다.
이 RESTful API 예제에서는 Visual Studio를 사용하여 .Net에서 REST 애플리케이션을 만들 것입니다. Restful 웹 서비스의 경우 다음 REST 서비스 예제를 에뮬레이트할 것입니다.
우리는 아래 데이터 세트에서 작동하는 Restful 웹 서비스를 갖게 될 것입니다.
아래 데이터 세트는 Tutorialid를 기반으로 보유하고 있는 Tutorial을 노출하는 회사의 REST API 예를 나타냅니다.
튜토리얼ID | 튜토리얼 이름 |
---|---|
0 | 배열 |
1 | 큐 |
2 | 스택 |
REST API 튜토리얼 예제에서는 아래 Restful 동사를 구현하겠습니다.
- 튜토리얼 받기 – 클라이언트가 이 Restful API를 호출하면 웹 서비스에서 사용할 수 있는 전체 튜토리얼 세트가 제공됩니다.
- 튜토리얼/튜토리얼ID 받기 – 클라이언트가 이 Restful API를 호출하면 클라이언트가 보낸 Tutorialid를 기반으로 Tutorial 이름이 부여됩니다.
- POST 튜토리얼/튜토리얼 이름 – 클라이언트가 이 Restful API를 호출하면 클라이언트는 Tutorialname을 삽입하라는 요청을 제출합니다. 그러면 웹 서비스는 제출된 튜토리얼 이름을 컬렉션에 추가합니다.
- DELETE 튜토리얼/튜토리얼id– 클라이언트가 이 Restful API를 호출하면 클라이언트는 Tutorialid를 기반으로 Tutorialname을 삭제하라는 요청을 제출합니다. 그러면 웹 서비스는 제출된 튜토리얼 이름을 컬렉션에서 삭제합니다.
이 RESTful API 튜토리얼의 아래 단계에 따라 위의 구현을 수행하는 첫 번째 RESTful 웹 서비스를 만들어 보겠습니다.
첫 번째 편안한 웹 서비스를 만드는 방법
단계 1) 새 프로젝트를 만듭니다.
첫 번째 단계는 빈 공간을 만드는 것입니다. Asp.Net 웹 애플리케이션. Visual Studio 2013에서 메뉴 옵션 파일->새 프로젝트를 클릭합니다.
새 프로젝트 옵션을 클릭하면 Visual Studio에서 프로젝트 유형을 선택하고 프로젝트에 필요한 세부 정보를 제공하기 위한 또 다른 대화 상자가 표시됩니다. 이는 이 RESTful API 튜토리얼의 다음 단계에서 설명합니다.
단계 2) 프로젝트 이름과 위치를 입력하세요.
- 먼저 RESTful 웹 서비스를 선택하세요. C# ASP.NET 웹 애플리케이션의 웹 템플릿입니다. 웹 서비스 프로젝트를 만들려면 프로젝트가 이 유형이어야 합니다. 이 옵션을 선택하면 Visual Studio가 웹 기반 애플리케이션에 필요한 필수 파일을 추가하는 데 필요한 단계를 수행합니다.
- 우리의 경우 "Webservice.REST"로 주어진 프로젝트의 이름을 지정하십시오.
- 그런 다음 프로젝트 파일이 저장될 위치를 지정하십시오.
완료되면 Visual Studio 2013의 솔루션 탐색기에 프로젝트 파일이 생성된 것을 볼 수 있습니다.
단계 3) 웹 서비스 파일을 만듭니다.
다음 단계는 RESTful 웹 서비스를 포함할 웹 서비스 파일을 생성하는 것입니다.
- 먼저 아래와 같이 프로젝트 파일을 마우스 오른쪽 버튼으로 클릭하십시오.
- 이 단계에서,
- 프로젝트 파일을 마우스 오른쪽 버튼으로 클릭하세요.
- "추가->새 항목" 옵션을 선택하세요.
나타나는 대화 상자에서 다음을 수행해야 합니다.
- WCF 서비스(Ajax 지원) 옵션 선택 - 이 유형의 파일을 선택하면 Visual studio RESTful 웹 서비스를 생성하는 데 도움이 되는 몇 가지 기본 코드를 추가합니다. WCF는 다음을 의미합니다. Windows 의사 소통 Foundation. WCF는 다양한 플랫폼 또는 동일한 플랫폼의 애플리케이션이 TCP, HTTP, HTTPS와 같은 다양한 프로토콜을 통해 통신할 수 있는 라이브러리입니다. Ajax는 기본적으로 비동기입니다. JavaScript 그리고 XML. AJAX를 사용하면 백그라운드에서 서버와 소량의 데이터를 교환하여 웹 페이지를 비동기적으로 업데이트할 수 있습니다.
- 다음으로 우리의 경우 TutorialService인 서비스 이름을 지정합니다.
- 마지막으로 추가 버튼을 클릭하여 솔루션에 서비스를 추가합니다.
단계 4) 구성을 하십시오.
다음 단계는 실제로 이 프로젝트가 RESTful 웹 서비스 작업을 완료할 수 있도록 구성을 변경하는 것입니다. 이를 위해서는 다음과 같은 파일을 변경해야 합니다. 웹.구성. 이 파일은 Webservice 프로젝트 파일과 동일한 창에 나타납니다. Web.config 파일에는 웹 응용 프로그램이 제대로 작동하도록 하는 모든 구성이 포함되어 있습니다. 실제로 변경된 내용을 통해 애플리케이션은 순수 RESTful 웹 서비스로 데이터를 보내고 받을 수 있습니다.
- Web.config 파일을 클릭하여 코드를 엽니다.
- 라인 찾기
- 줄을 다음으로 변경하십시오.
단계 5) 구현을 위한 코드를 추가합니다.
이 RESTful API 튜토리얼의 다음 단계는 구현을 위한 코드를 추가하는 것입니다. 아래에 언급된 모든 코드는 TutorialService.svc 파일에 작성되어야 합니다.
- 첫 번째 비트는 프로그램에서 사용될 데이터를 나타내는 코드를 추가하는 것입니다. 따라서 "배열", "큐" 및 "스택" 값을 가진 문자열 변수 목록을 갖게 됩니다. 이는 호스팅 웹 서비스를 통해 사용할 수 있는 튜토리얼 이름을 나타냅니다.
namespace Webservice.REST { [ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed public class TutorialService { private static List<String> lst = new List<String> (new String[] {"Arrays","Queues","Stacks"});
단계 6) GET 메소드에 대한 코드를 정의하십시오.
다음으로 GET 메소드에 대한 코드를 정의하겠습니다. 이 코드는 동일한 TutorialService.svc 파일에도 있습니다. 이 코드는 브라우저에서 서비스를 호출할 때마다 실행됩니다.
아래 방법은 아래 언급된 시나리오를 수행하는 데 사용됩니다.
- 사용자가 사용 가능한 모든 튜토리얼 목록을 원하는 경우 이를 수행하려면 아래 코드를 작성해야 합니다.
[WebGet(UriTemplate="/Tutorial")] public String GetAllTutorial() { int count = 1st.Count; String TutorialList = ""; for (int i = 0; i < count; i++) TutorialList = TutorialList + lst[i] + ","; return TutorialList; }
코드 설명:-
- 코드의 첫 번째 줄이 가장 중요합니다. URL을 통해 이 메서드를 호출하는 방법을 정의하는 데 사용됩니다. 따라서 우리 웹 서비스에 대한 링크가 http://localhost:52645/TutorialService.svc URL에 '/Tutorial'을 다음과 같이 추가하면 http://localhost:52645/TutorialService.svc/Tutorial , 위의 코드가 호출됩니다. 'WebGet'의 속성은 이 메소드가 GET 동사를 통해 호출될 수 있도록 RESTful 메소드가 되도록 허용하는 매개변수입니다.
- 이 코드 섹션은 'lst' 변수의 문자열 목록을 살펴보고 호출 프로그램에 모든 문자열을 반환하는 데 사용됩니다.
단계 7) 출력을 반환합니다.
아래 코드는 Tutorial ID를 사용하여 Tutorial Service에 대해 GET 호출이 이루어진 경우 Tutorial ID를 기반으로 해당 Tutorial Name을 반환하도록 보장합니다.
[WebGet (UriTemplate = "/Tutorial/{Tutorialid}")] public String GetTutorialbyID(String Tutorialid) { int pid; Int32.TryParse(Tutorialid, out pid); return lst[pid]; }
코드 설명:-
- 코드의 첫 번째 줄이 가장 중요합니다. URL을 통해 이 메서드를 호출하는 방법을 정의하는 데 사용됩니다. 따라서 우리 웹 서비스에 대한 링크가 http://localhost:52645/TutorialService.svc URL에 '/Tutorial/{Tutorialid}'를 추가하면 웹 서비스를 다음과 같이 호출할 수 있습니다. http://localhost:52645/TutorialService.svc/Tutorial/1 예로서. 그런 다음 웹 서비스는 Tutorial ID#1이 있는 Tutorial 이름을 반환해야 합니다.
- 이 코드 섹션은 웹 메소드에 전달된 튜토리얼 ID가 있는 "튜토리얼 이름"을 반환하는 데 사용됩니다.
- 기본적으로 기억해야 할 것은 브라우저의 URL로 전달되는 모든 것이 문자열이라는 것입니다.
- 하지만 목록의 색인은 정수여야 하므로 먼저 Tutorialid를 정수로 변환한 다음 이를 사용하여 목록의 색인 위치에 액세스하고
- 그런 다음 그에 따라 호출 프로그램에 값을 반환합니다.
단계 8) POST 메소드에 대한 코드를 작성합니다.
다음 단계는 POST 메서드에 대한 코드를 작성하는 것입니다. 이 메소드는 POST 메소드를 통해 튜토리얼 목록에 문자열 값을 추가할 때마다 호출됩니다. 예를 들어 "Software Testing"이라는 Tutorial 이름을 추가하려면 POST 메서드를 사용해야 합니다.
코드 설명:-
- 첫 번째 줄은 메소드에 첨부된 'WebInvoke' 속성입니다. 이렇게 하면 POST 호출을 통해 메서드를 호출할 수 있습니다. RequestFormat 및 ResponseFormat 속성은 JSON으로 언급되어야 합니다. 왜냐하면 RESTFul 웹 서비스에 값을 게시할 때 값은 이 형식이어야 하기 때문입니다.
- 두 번째 코드 줄은 POST 호출을 통해 전달된 문자열 값을 기존 Tutorial 문자열 목록에 추가하는 데 사용됩니다.
단계 9) DELETE 작업을 처리하는 메서드를 추가합니다.
마지막으로 DELETE 작업을 처리하는 메서드를 추가합니다. 이 메서드는 DELETE 메서드를 통해 Tutorials 목록에서 기존 문자열 값을 삭제할 때마다 호출됩니다.
[WebInvoke(Method = "DELETE", RequestFormat = WebMessageFormat.Json, UriTemplate = "/Tutorial/{Tutorialid}", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] public void DeleteTutorial(String Tutorialid) { int pid; Int32.TryParse(Tutorialid, out pid); 1st.RemoveAt(pid); }
코드 설명:-
- 첫 번째 줄은 메소드에 첨부된 'WebInvoke' 속성입니다. 이렇게 하면 POST 호출을 통해 메서드를 호출할 수 있습니다. RequestFormat 및 ResponseFormat 속성은 JSON으로 언급되어야 합니다. 왜냐하면 RESTFul 웹 서비스에 값을 게시할 때 값은 이 형식이어야 하기 때문입니다. Method 매개변수는 "DELETE"로 설정되어 있습니다. 이는 DELETE 동사를 실행할 때마다 이 메서드가 호출된다는 의미입니다.
- 두 번째 코드 줄은 DELETE 호출을 통해 전송된 Tutorialid를 가져온 다음 목록에서 해당 ID를 삭제하는 데 사용됩니다. (그만큼 인텍스 넘스 코드의 함수는 튜토리얼 ID를 문자열 변수에서 정수로 변환하는 데 사용됩니다.
첫 번째 Restful 웹 서비스 실행
이제 위 섹션에서 전체 웹 서비스를 만들었습니다. 모든 클라이언트에서 호출할 수 있도록 Tutorial 서비스를 실행하는 방법을 살펴보겠습니다.
웹 서비스를 실행하려면 다음 단계를 따르세요.
단계 1) 프로젝트 파일 – Webservice.REST를 마우스 오른쪽 버튼으로 클릭하십시오.
단계 2) '시작 프로젝트로 설정' 메뉴 옵션을 선택합니다. 이렇게 하면 Visual Studio에서 전체 솔루션을 실행할 때 이 프로젝트가 실행됩니다.
단계 3) 다음 단계는 프로젝트 자체를 실행하는 것입니다. 이제 시스템에 설치된 기본 브라우저에 따라 Visual Studio의 실행 버튼 옆에 적절한 브라우저 이름이 표시됩니다. 우리의 경우, Google Chrome 나타납니다. 이 버튼을 클릭하기만 하세요.
산출:-
프로젝트가 실행되면 TutorialService.svc/Tutorial 섹션을 찾아볼 수 있으며 아래 출력을 얻을 수 있습니다.
위 출력에서,
- 브라우저가 'GET' 동사를 호출하고 웹 서비스에서 'GetAllTutorial' 메서드를 실행하는 것을 볼 수 있습니다. 이 모듈은 웹 서비스에서 제공하는 모든 튜토리얼을 표시하는 데 사용됩니다.
첫 번째 Restful 웹 서비스 테스트하기
위 섹션에서는 브라우저를 사용하여 'GET' 동사를 실행하고 'GetAllTutorial'을 호출하는 방법을 이미 살펴보았습니다.
- 이제 브라우저를 사용하여 다음의 사용 사례 시나리오를 실행해 보겠습니다.
GET Tutorial/Tutorialid – 클라이언트가 이 Restful API를 호출하면 클라이언트가 보낸 Tutorialid를 기반으로 Tutorial 이름이 부여됩니다.
브라우저에서 URL의 Tutorial 단어 뒤에 /1 문자열을 추가합니다. Enter 버튼을 누르면 아래와 같은 결과가 나옵니다.
이제 실제로 튜토리얼 문자열 목록의 숫자 1에 해당하는 대기열의 출력을 볼 수 있습니다. 이는 이제 'GetTutorialbyID' 메소드가 웹 서비스에서 호출되고 있음을 의미합니다. 또한 값 1이 브라우저를 통해 웹 서비스 및 메서드에 성공적으로 전달되고 있으며 이것이 바로 브라우저에서 "큐"의 올바른 해당 값을 얻는 이유임을 보여줍니다.
- 다음으로 아래 시나리오를 실행하여 웹 서비스를 사용해 보겠습니다. 이를 위해서는 “라는 도구를 설치해야 합니다.Fiddler” 사이트에서 무료로 다운로드할 수 있는 도구입니다.
POST Tutorial/Tutorialname – 클라이언트가 이 Restful API를 호출하면 클라이언트는 Tutorialname을 삽입하라는 요청을 제출합니다. 그러면 웹 서비스는 제출된 튜토리얼 이름을 컬렉션에 추가합니다.
Filddler 도구를 실행하고 아래 단계를 수행하십시오.
- composer 섹션으로 이동합니다. 이것은 모든 웹 애플리케이션에 제출할 수 있는 요청을 만드는 데 사용됩니다.
- 요청 유형이 "POST"이고 올바른 URL이 히트되고 있는지 확인하세요. 우리의 경우에는 http://localhost:52645/TutorialService.svc/Tutorial
- Content-Type이 application/json으로 표시되어 있는지 확인하세요. 웹 서비스의 POST 요청 메서드는 json 스타일 데이터만 허용하므로 애플리케이션에 요청을 보낼 때 이것이 지정되었는지 확인해야 합니다.
- 마지막으로 데이터를 입력해야 합니다. POST에 대한 메소드는 'str'이라는 매개변수를 허용한다는 점을 기억하십시오. 따라서 여기서는 Tutorial 이름 컬렉션에 "Trees"라는 값을 추가하고 해당 값이 str 변수 이름에 태그되어 있는지 확인하도록 지정합니다.
마지막으로, Fiddler에서 Execute 버튼을 클릭합니다. 그러면 웹 서비스에 데이터 "Trees"를 POST하라는 요청이 웹 서비스에 전송됩니다.
이제 Tutorial 목록의 모든 문자열을 표시하기 위해 Tutorial URL을 탐색하면 "Trees" 값도 표시되는 것을 볼 수 있습니다. 이는 웹 서비스에 대한 POST 요청이 성공적으로 실행되었으며 튜토리얼 목록에 성공적으로 추가되었음을 보여줍니다.
- 다음으로 아래 시나리오를 실행하여 웹 서비스를 소비해 보겠습니다. 이를 위해 fiddler 도구도 사용해야 합니다.
DELETE Tutorial/Tutorialid - 클라이언트가 이 Restful API를 호출하면 클라이언트는 Tutorialid를 기반으로 Tutorialname을 삭제하라는 요청을 제출합니다. 그러면 웹 서비스는 제출된 튜토리얼 이름을 컬렉션에서 삭제합니다.
Filddler 도구를 실행하고 아래 단계를 수행하십시오.
- composer 섹션으로 이동합니다. 이것은 모든 웹 애플리케이션에 제출할 수 있는 요청을 만드는 데 사용됩니다.
- 요청 유형이 "DELETE"이고 올바른 URL이 적중되고 있는지 확인하세요. 우리의 경우에는 다음과 같아야 합니다. http://localhost:52645/TutorialService.svc/Tutorial. URL을 통해 전송된 목록에서 문자열을 삭제하는 데 사용되는 ID를 매개변수로 확인하세요. REST 예에서는 1을 보내므로 2가 삭제됩니다.nd "큐"라는 컬렉션의 요소입니다.
마지막으로, Fiddler에서 Execute 버튼을 클릭합니다. 그러면 웹 서비스에 데이터 "Queues"를 삭제하라는 요청이 웹 서비스로 전송됩니다.
이제 Tutorial 목록의 모든 문자열을 표시하기 위해 Tutorial URL을 탐색하면 "Queues" 값이 더 이상 존재하지 않는다는 것을 알 수 있습니다.
이는 웹 서비스에 대한 DELETE 요청이 성공적으로 실행되었음을 보여줍니다. 튜토리얼 문자열 목록에서 인덱스 번호 1에 있는 요소가 성공적으로 삭제되었습니다.
요약
- REST는 REpresentational State Transfer를 의미합니다. REST는 본질적으로 가볍고 유지 관리가 가능하며 확장 가능한 웹 서비스를 구축하는 데 사용됩니다.
- 점점 더 많은 애플리케이션이 Restful 아키텍처로 이동하고 있습니다. 이는 현재 많은 사람들이 모바일 기기를 사용하고 있으며 더 다양한 애플리케이션이 클라우드로 이동하고 있기 때문입니다.
- REST의 주요 측면은 서버에 있는 리소스와 이러한 리소스 작업에 사용할 수 있는 GET, POST, PUT 및 DELETE 동사입니다.
- Visual Studio와 .Net을 사용하면 Restful 웹 서비스를 만들 수 있습니다.
- 인셀덤 공식 판매점인 지원 POST 및 PUT에 대한 웹 서비스를 사용하려면 Fiddler라는 또 다른 도구를 사용해야 합니다. 이 도구를 사용하여 POST 및 PUT 요청을 서버로 보낼 수 있습니다.