我无法找到解释如何使用多种方法在服务堆栈中实现服务的文档(清除或其他).所有示例都只显示一个方法的服务类.我不能想象如果你有一个4+方法的服务,你真的需要4 +服务类,4 + Request DTO和4+响应DTO.(如此处所示)
例:
具有4种搜索方法的服务(方法(Identifer1),方法2(标识2),方法3(标识3))
基于请求DTO(服务堆栈Wiki,创建您的第一个Web服务)的文档结构,请求DTO的类属性,控制到服务类的路由,(如果我理解正确,但我再次寻找文档或者一个例子)
关于路由的文档有点模糊,因为大多数示例都不遵循已定义的请求/响应DTo的命名约定,如" 您的第一个Web服务解释 "中的大纲
我也读过这篇SO帖子,但是在遵循建议之后,我留下了同样的问题.
我不能想象如果你有一个4+方法的服务,你真的需要4 +服务类,4 + Request DTO和4+响应DTO.
不需要1个具有4种方法的服务类 - 每种方法当然都会接受请求Dto并返回响应Dto.显然,对于某些方法,您可能不需要响应Dto
例如,以下是具有5种方法的典型服务的外观:
public class ProductsService: Service
{
[Route("/products")]
public class GetProductsRequest: IReturn<List<ProductResponse>> {}
public class ProductResponse
{
public int Id { get; set; }
public string Name { get; set; }
}
public object Get(GetProductsRequest request)
{
IEnumerable<ProductResponse> response = ...
return response;
}
[Route("/products/{id}")]
public class GetProductRequest: IReturn<ProductResponse>
{
public int Id { get; set; }
}
public object Get(GetProductRequest request)
{
ProductResponse response = ...
return response;
}
[Route("/products")]
public class CreateProductRequest
{
public string Name { get; set; }
}
public object Put(CreateProductRequest request)
{
... create the product here
return new HttpResult { StatusCode = HttpStatusCode.Created };
}
[Route("/products/{id}")]
public class UpdateProductRequest
{
public int Id { get; set; }
public string Name { get; set; }
}
public object Patch(UpdateProductRequest request)
{
... update the product here
return new HttpResult { StatusCode = HttpStatusCode.Accepted };
}
[Route("/products/{id}")]
public class DeleteProductRequest
{
public int Id { get; set; }
}
public object Delete(DeleteProductRequest request)
{
... delete the product here
return new HttpResult { StatusCode = HttpStatusCode.Accepted };
}
}
Run Code Online (Sandbox Code Playgroud)
我已将请求和响应DTO作为嵌套类放到服务中,但它会使它们在单独的文件中更具可读性:
public class ProductsService: Service
{
public object Get(GetProductsRequest request)
{
IEnumerable<ProductResponse> response = ...
return response;
}
public object Get(GetProductRequest request)
{
ProductResponse response = ...
return response;
}
public object Put(CreateProductRequest request)
{
... create the product here
return new HttpResult { StatusCode = HttpStatusCode.Created };
}
public object Patch(UpdateProductRequest request)
{
... update the product here
return new HttpResult { StatusCode = HttpStatusCode.Accepted };
}
public object Delete(DeleteProductRequest request)
{
... delete the product here
return new HttpResult { StatusCode = HttpStatusCode.Accepted };
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1050 次 |
| 最近记录: |