c# – RavenDB ID前缀和REST API

前端之家收集整理的这篇文章主要介绍了c# – RavenDB ID前缀和REST API前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在努力解决一些应该是微不足道的事情,也许是这样,但我找不到合适的解决方案.

我的问题源于RavenDB默认ID结构.假设我们使用HiLo算法创建一个人,我们将得到我们的第一个文档:

people/A-1

相关系列“人物”现在有一个成员.

我的问题非常简单:设计一个普通的RESTful方法获取一个人:

GET people/:id

并使用示例文档ID调用它,我的调用将变为:

GET people/people/A-1

这显然不起作用,因为斜杠字符是路由分隔符,但是使用RavenDB它也是实体ID的一部分.

我尝试使用不同的分隔符(更改我的客户端代码的约定),因此要获得类似人#A-1的ID,但RavenDB Studio无法识别:如果我尝试将两个文档“链接”在一起ID,只识别标准格式.此外,我找不到在服务器级别设置数据库约定的方法,但仅限于客户端级别.

这个解决方案也感觉像是一个肮脏的解决方法,我正在寻找正确的做事方式.

我知道我可以使用任意ID,比如没有任何前缀的电子邮件地址,但这对于我要存储的各种实体都不可行,自然键在每种情况下都不是一个选项.

所以我要求任何比我更有经验的人使用RavenDB.解决这个问题的正确方法是什么?

解决方法

我没有在玩具项目之外使用过ravendb,但是当我读到ayendes书时,我认为这将是一个问题.
我看到三种可能的方法来规避这个:

>指定一个guid作为id,这样你就没有/在你的id中.这可以在文档创建时完成
>将“/”替换为每个控制器方法上较不坏的东西,这很烦人且容易出错.
>生成URLS时,url-escape id部分.

我想我会用#1.

猜你在找的C#相关文章