servicestack,Rest,servicestack" /> servicestack,Rest,servicestack" />

Rest 如何使用ServiceStack和自定义路由在路由中启用格式?

Rest 如何使用ServiceStack和自定义路由在路由中启用格式?,rest,servicestack,Rest,servicestack,我有一些ServiceStack服务运行良好,并且与路由属性匹配;但是,路由属性似乎与“自动路由”不同步 我想定义路由(例如:/things/{id}),还可以在url中选择格式。将格式添加为参数当前有效 [Route("/things")] [Route("/things/{id}")] public class Things { public string id { get; set; } } /api/things /api/things/{1} (return default

我有一些ServiceStack服务运行良好,并且与路由属性匹配;但是,路由属性似乎与“自动路由”不同步

我想定义路由(例如:/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配置中启用它的任何建议?

请参阅上的wiki页面,以获取有关路由工作原理的文档,例如,如果您想使用预定义路由,正确的URL将是:

/api/json/reply/Things
/api/json/reply/things?Id=1
/api/xml/reply/Things
/api/xml/reply/things?Id=1
注意:预定义的仅使用请求DTO的名称,即它不使用所有自定义路由

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

太棒了,谢谢!我错过了wiki内容协商部分的第二部分,该部分显示支持.ext(类似于mvc)。2个小的后续问题,如果可以的话:(1)如何移动ext位置(即:/api.ext/)。不是交易破坏者,但在mvc路由中是可能的。(2) 有些ID是字符串,有时带有点(bob.dole)。发送bob.dole.json非常有效。如何?1)它只在PaTyfo的末端工作,而不是在中间。2) 它只查看最终扩展,并且仅当扩展为内置或用户注册的内容类型时才有效。感谢您的及时跟进。