我有一个 ID 为的实体
public string ID {get;set;}
activities/1
(来自 RavenDB)。
我在我的 ServiceStack AppHost 中注册了以下路由
Routes
.Add<Activity>("/activities")
.Add<Activity("/activities/{id}");
我正在使用主干应用程序向我的 REST 服务 POST 和 PUT。
开箱即用会发生什么:
- id 属性被序列化为 json 为“activities/1”
- id 属性被编码为“activities%2F1”的路由
- ServiceStack 优先于基于 URL 的 id 属性,因此我的字符串获取直接对 RavenDb 没有用的编码值。
我知道的选项:
- 将主干更改为发布到“/活动”并让 JSON 序列化器启动
- 更改 RavenDb ID 生成以使用连字符而不是斜杠
- 让我的 Id 属性在集合上解析编码的 %2F 并转换为斜杠
两者都有缺点,因为我要么在我的 API 中失去了 RESTful,这是不可取的,要么我不遵循 RavenDb 约定,这通常是明智的。另外,我个人偏好使用斜线。
所以我想知道在 servicestack 中是否有任何其他选项可以用来对涉及较少妥协的问题进行排序?序列化程序自定义或通配符路由都在我的脑海中......