我有一个实体的ServiceStack路由与ravendb IDS
public string ID {get;set;}
activities/1
的ID(它来自RavenDB)。
我注册了以下路线在我ServiceStack APPHOST
Routes
.Add<Activity>("/activities")
.Add<Activity("/activities/{id}");
我使用主干应用POST和PUT到我的REST服务。
出的即装即用,会发生什么:
- id属性被序列化到JSON作为
- id属性被编码成是“活动%2F1”路线“活动/ 1”
- ServiceStack优先考虑基于URL的id属性,所以我的字符串获得了直接对RavenDb无用的编码值。
的选择我所知道的:
- 更改骨干张贴到“/活动”,让JSON串行器踢
- 变化RavenDb ID生成使用连字符,而不是斜线
- 让我Id属性解析对集编码为%2F和转换成斜线
两人都在我要么失去RESTfuln缺点在我的API中,这是不受欢迎的,或者我不遵循RavenDb惯例,这些惯例通常是明智的狐狸。另外,我个人喜欢斜线。
所以我想知道是否有任何其他选项在服务栈中,我可以用来排序这个问题涉及较少的妥协?无论是串行器定制或通配符路由在我的脑海....
感谢这个马特。那么你是从GET返回一个整数ID:/ api/users? – Chris
不,我发现它太笨拙操纵结果集,所以我只是返回完整的字符串Id。客户端应用程序保留完整的字符串ID,但是当它使用id生成一个url时,它会使用类似id.split(“/”)[1] –