如何在一个服务中继承所有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.如何在本服务中继承另一个DTO课程???????? 我需要为此创建单独的课程吗?
public class CnextRestService : RestServiceBase<RestResourcename>
{
public override object OnGet(RestResourcename request)
{
return request;
}
}
请就此问题向我提出建议.......
答案 0 :(得分:2)
是ServiceStack要求您为每个Web服务都有一个单独的类,但是如果您使用REST(即通过继承RestServiceBase),您可以在同一个Web服务中的同一个Resource(aka Request)DTO上实现多个HTTP Verb,例如:
public class CustomersService : RestServiceBase<Customers>
{
OnGet(){...}
OnPost(){...}
OnDelete(){...}
OnPut(){...}
}
这允许您为以下HTTP操作提供多个实现:
GET /customers
GET /customers/1
POST /customers
PUT /customers/1
DELETE /customers/1
虽然如果使用SOAP,则每个Web服务仅限于1个RPC方法,因为SOAP仅支持HTTP POST。
执行此操作的最佳方法是从 ServiceBase 继承并实现 Run()方法,无论使用哪个HTTP Verb或端点调用该方法都将被调用服务。
这意味着您需要将自己限制为每个Web服务一个METHOD,例如:你必须这样做:
public class GetCustomersService : ServiceBase<GetCustomers> {...}
public class PostCustomersService : ServiceBase<PostCustomers> {...}
public class DeleteCustomersService : ServiceBase<DeleteCustomers> {...}
public class PutCustomersService : ServiceBase<PutCustomers> {...}