我有这样的REST ServiceStack Route.Add声明
Routes.Add<MyDTOObject>(/servicename/{property1fromDTO});
但我需要传递一个未在MyDTOObject类声明中定义的额外String值。
是否可以传递这样的内容Routes.Add<MyDTOObject>(/servicename/{property1fromDTO}/{additionalString});
并在我的OnGet(MyDTOObject request){...}
方法实施中检索它?
目前我只能从request
获取MyDTOObject
类声明中定义的属性,这些属性是由Routes.Add
使用的注释所指定的。
在我的服务代码上,我有这个:
public override object OnGet(MyDTOObject request)
{
{1}}
{ ...
request.property1fromDTO //get value
但我不能这样做:
...}
因为Visual Studio不将其识别为request.additionalString //get the value
帮助将不胜感激,因为我对ServiceStack和RESTful服务还不熟悉。谢谢!
答案 0 :(得分:0)
不完全确定您要实现的目标,但可以使用wildcard at the end to absorb multiple paths,例如:
Routes.Add("/save/{Year}/{Week}/{DaysString*}");
将填充已知变量并将其余变量保留在DayString
中,以便您手动解析。请参阅this answer for more details。
您可以使用{ignore}
关键字忽略其他路径,例如:
Routes.Add<MyDto>(/servicename/{property1fromDTO}/{ignore});
您还可以使用base.Request
对服务内部的请求进行完全访问,例如:
base.Request.QueryString["param"];
base.Request.PathInfo
base.Request.RawUrl
*注意:看起来您正在使用旧的API(即 OnGet )。我建议继承Service
,以便您可以使用New API,因为在下一个ServiceStack v4中删除了旧API。*