我有一些运行良好且匹配Route属性的ServiceStack服务;但是,Route属性似乎不能与“自动路由”协同工作。
我想定义路由(例如:/ things / {id}),并且还可以在url中选择格式。将格式添加为参数当前有效。
[Route("/things")]
[Route("/things/{id}")]
public class Things
{
public string id { get; set; }
}
/api/things
/api/things/{1} (return default format)
/api/json/things
/api/json/things/{1}
/api/xml/things
/api/xml/things/{1}
根据ServiceStack维基,URL中的格式应“正常工作”。有关如何在apphost配置中启用它的任何建议吗?
答案 0 :(得分:0)
有关路由如何工作的文档,请参阅Routing上的Wiki页面,例如如果你想使用预定义的路线,那么正确的网址是:
/api/json/reply/Things
/api/json/reply/things?Id=1
/api/xml/reply/Things
/api/xml/reply/things?Id=1
注意:预定义的仅使用请求DTO的名称,即它不会使用您的所有自定义路由。
Content Negotiation section on Routing wiki显示了请求不同内容类型的不同方式。在ServiceStack(v3.9.54 +)中,您现在可以使用格式 .ext ,例如:
/api/things.json
/api/things/1.json
/api/things.xml
/api/things/1.xml
使用?format = ext 参数的替代方法:
/api/things?format=json
/api/things/1?format=json
/api/things?format=xml
/api/things/1?format=xml