1

我有一些运行良好并匹配 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 wiki,URL 中的格式应该“正常工作”。关于如何在 apphost 配置中启用它的任何建议?

4

1 回答 1

0

有关路由如何工作的文档,请参阅路由的 wiki 页面,例如,如果您想使用预定义的路由,正确的 url 将是:

/api/json/reply/Things
/api/json/reply/things?Id=1
/api/xml/reply/Things
/api/xml/reply/things?Id=1

注意:预定义使用Request DTO 的名称,即它不使用您所有的自定义路由。

Routing wiki 上的Content Negotiation 部分显示了请求不同 Content-Type 的不同方式。在 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
于 2013-06-19T16:15:34.000 回答