7wp*_*7wp 2 asp.net servicestack
我想知道ServiceStack注册路由的最佳做法是什么.
我已经阅读了一些在AppHost中这样做的地方,因为它将路线定义与DTO分离.但我看到的大多数例子都是使用装饰器模式.
哪个更好?是否有任何争论使用一个而不是另一个?
使用路线属性装饰您的DTO已成为最佳做法.SerivceStack的"新API"的发布表明了这一点的许多好处,但最重要的是它促进了更"简洁,类型化,端到端的客户端API".
通过使用路由属性除了与的一个标记您的DTO的IReturn,IReturn<T>或者IReturnVoid界面可以使用现在ServiceStack所提供的全部功能.
好处
对于给定的DTO,您可以使用ToUrl扩展方法通过发现属性来生成路由.
[Route("/route/{Id}/{Name}")]
public class ExampleDTO : IReturn
{
public int Id { get; set; }
public string Name { get; set; }
public string Value { get; set; }
}
var url = new ExampleDTO() { Id = 1, Name = "Test", Value = "Foo" }.ToUrl("GET");
// generates /route/1/Test?value=Foo
Run Code Online (Sandbox Code Playgroud)
ServiceClients将在幕后完成所有这些工作.您的消费代码可以变为:
ExampleDTO response = new JsonServiceClient(“http://api.com/)
.Get(new ExampleDTO() { Id = 1, Name = "Test", Value = "Foo" });
Run Code Online (Sandbox Code Playgroud)
脱钩怎么样? 我认为没有必要将DTO与路线分离.我希望我的开发人员知道在不改变路线的情况下不应更改请求.我看到了很多运行时错误,因为我忘了在更改DTO后更新AppHost中的路由.
| 归档时间: |
|
| 查看次数: |
295 次 |
| 最近记录: |