1

我有一个这样的 REST ServiceStack Route.Add 声明, 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 服务还很陌生。谢谢!

4

1 回答 1

0

不完全确定您要达到的目标,但您可以在最后使用通配符来吸收多个路径,例如:

Routes.Add("/save/{Year}/{Week}/{DaysString*}");

这将填充已知变量并将其余变量留给DayString您手动解析。有关更多详细信息,请参阅此答案

{ignore}您可以使用关键字忽略附加路径,例如:

Routes.Add<MyDto>(/servicename/{property1fromDTO}/{ignore});

您还可以从 Service 内部完全访问请求base.Request,例如:

base.Request.QueryString["param"];
base.Request.PathInfo
base.Request.RawUrl

*注意:看起来您使用的是旧 API(即OnGet)。我建议继承自,Service以便您可以使用新 API,因为旧 API 在 ServiceStack 的下一个 v4 中已被删除。*

于 2013-11-08T15:36:54.330 回答