传递 DTO 上未包含的其他参数



我有一个 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 中删除。

最新更新