我有一个 REST ServiceStack Route.添加这样的声明 Routes.Add<MyDTOObject>(/servicename/{property1fromDTO});
但我需要传递一个未在 MyDTOObject 类声明中定义的附加字符串值。
有没有可能通过这样
的东西
Routes.Add<MyDTOObject>(/servicename/{property1fromDTO}/{additionalString});
并在我的OnGet(MyDTOObject request){...}
方法实现中检索它?
目前,我只能从request
中获取在MyDTOObject
类声明上定义的属性的值,这些属性由用于Routes.Add
的注释指定。
在我的服务代码上,我有这个:
public override object OnGet(MyDTOObject request)
{ ...
request.property1fromDTO //get value
...}
但我不能这样做:
request.additionalString //get the value
因为Visual Studio不将其识别为类型MyDTOObject
帮助将不胜感激,因为我对ServiceStack和RESTful服务相当陌生。谢谢!
不确定您要实现的目标,但您可以在末尾使用通配符来吸收多个路径,例如:
Routes.Add("/save/{Year}/{Week}/{DaysString*}");
这将填充已知变量,并将其余变量保留在DayString
中供您手动解析。有关更多详细信息,请参阅此答案。
您可以使用 {ignore}
关键字忽略其他路径,例如:
Routes.Add<MyDto>(/servicename/{property1fromDTO}/{ignore});
您还可以从服务内部完全访问请求,例如base.Request
:
base.Request.QueryString["param"];
base.Request.PathInfo
base.Request.RawUrl
*注意:看起来您使用的是旧的API(即OnGet)。我建议从Service
继承,以便您可以使用新 API,因为旧 API 已在 ServiceStack 的下一个 v4 中删除。