2011-07-18 9 views
1

하나의 서비스에서 모든 DTO 리소스를 상속하는 방법은 무엇입니까? 예를 들어ServiceStack - 단일 Restservice에서 모든 DTO 리소스 상속

말을

내가 가지고 자원 클래스 :

[RestService("/getstudentname", "GET,POST,PUT,OPTIONS")] 
public class RestResourcename 
{ 
public string Name { get; set; } 
} 

[RestService("/getstudentID", "GET,POST,PUT,OPTIONS")] 
public class CNextRestResourceid 
{ 
public string Name { get; set; } 
} 

내 서비스 클래스가 있습니다 1.How이 서비스에 다른 DTO 클래스를 상속을 ???????? 2.Do 나는 이것을 위해 별도의 클래스를 만들 필요가 ?????

public class CnextRestService : RestServiceBase<RestResourcename> 
{ 
public override object OnGet(RestResourcename request) 
{ 
    return request; 
} 
} 

당신이 REST를 사용하는 경우 (RestServiceBase에서 상속하여 즉,)하지만

답변

2

예 ServiceStack는 각 웹 서비스에 대해 별도의 클래스를 가질 것을 요구 .......이 문제에 대해 저를 제안하십시오

public class CustomersService : RestServiceBase<Customers> 
{ 
    OnGet(){...} 
    OnPost(){...} 
    OnDelete(){...} 
    OnPut(){...} 
} 

이 다음과 같은 HTTP 작업에 대해 여러 구현을 제공 할 수 있습니다 :

동일한 자원에 여러 HTTP 동사 (일명 요청) 같은 웹 서비스에 DTO, 예를 구현할 수 있습니다
GET /customers 
GET /customers/1 
POST /customers 
PUT /customers/1 
DELETE /customers/1 

SOAP를 사용하는 경우 SOAP는 HTTP POST 만 지원하기 때문에 각 웹 서비스에 대해 1 RPC 메소드로 제한됩니다.

이 작업을 수행하는 가장 좋은 방법은 ServiceBase에서 상속에 관계없이 호출되는 HTTP의 동사 또는 엔드 포인트가 서비스를 호출하는 데 사용 된 실행() 방법을 구현하는 것입니다.

이것은 웹 서비스 당 하나의 METHOD로 제한해야한다는 것을 의미합니다. 당신은 이것을해야한다 :

public class GetCustomersService : ServiceBase<GetCustomers> {...} 
public class PostCustomersService : ServiceBase<PostCustomers> {...} 
public class DeleteCustomersService : ServiceBase<DeleteCustomers> {...} 
public class PutCustomersService : ServiceBase<PutCustomers> {...}