WCF RESTful 웹서비스 만들기
WCF로 RESTful 형식의 웹서비스를 만들어보자. .NET Framework 3.5부터 WCF를 지원하고 있다.
URL로 인자를 보내는 GET 방식과 JSON으로 인자를 보내는 POST 방식에 대한 간단한 예제이다.
[소스파일]
RESTfulTest.zip
[웹서비스 테스트 유틸]
WCF_RESTful_Test.exe
WCF Service Application 프로젝트를 생성한다.
프로젝트를 생성하면 GetData(), GetDataUsingDataContract() 두개의 함수가 기본으로 만들어져 있다.
RESTful 웹서비스를 만들기위해 Web.config 파일을 수정해 주어야 한다.
Web.Config
IService1.cs 파일의 [OperationContract] 부분을 수정한다.
WebGet, UriTemplate을 사용하여 URL을 통하여 인자를 받을수 있도록 수정한다.
IService1.cs
[OperationContract][WebGet(UriTemplate = "GetData/{value}")]
string GetData(string value);
Service1.svc.cs 파일의 GetData() 함수 인자 타입을 string으로 변경한다.
Service1.svc 파일을 브라우저에서 보기를 하면 웹서비스가 실행된다.
http://localhost:2877/Service1.svc/GetData/1 URL에 함수와 인자를 넣어주면 결과가 반환된다.
string이 아니라 JSON 객체를 반환 하도록 바꿔보자.
[DataContract] Member 클래스를 생성한다.
GetData() 함수를 반환 유형을 Member로 변경한다.
IService1.cs
[OperationContract][WebGet(UriTemplate = "GetData/{value}")]
Member GetData(string value);
[DataContract]
public class Member
{
[DataMember(Order = 0)]
public string name { get; set; }
[DataMember(Order = 1)]
public int age { get; set; }
}
Service1.svc.cs 파일에서 GetData() 함수 반환 유형을 Member로 변경하고
Member 객체에 값을 할당 한다.
Service1.svc.cs
public Member GetData(string name)
{
Member member = new Member();
member.name = name;
member.age = 25;
return member;
}
http://localhost:2877/Service1.svc/GetData/CHOE 결과가 JSON이 아니라 XML로 반환 된다.
ResponseFormat을 JSON으로 변경한다.
IService1.cs
[OperationContract][WebGet(UriTemplate = "GetData",
ResponseFormat = WebMessageFormat.Json)]
Member GetData(string name);
JSON으로 결과가 반환되는것을 확인할 수 있다.
POST 방식으로 인자를 전달하는 방법으로 변경해 보자.
POST 방식은 WebGet대신 WebInvoke를 사용해야 한다.
Method, BodyStyle, RequestFormat 항목을 추가한다.
IService1.cs
[OperationContract][WebInvoke(UriTemplate = "GetData",
Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
Member GetData(string name);
테스트 프로그램으로 인자를 POST로 넘기면 결과를 반환하는것을 확인할 수 있다.