如何在ServiceStack与自定义路由串联的路由中启用格式?

时间:2013-06-19 15:43:52

标签: rest servicestack

我有一些运行良好且匹配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配置中启用它的任何建议吗?

1 个答案:

答案 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