使用RavenDB发送POST请求时如何正确定义id参数
RavenDB REST API插入文档id参数设置方案
你遇到的报错核心原因是RavenDB要求手动指定的文档id必须放在URL查询参数中,而非请求体内部,请求体中的id字段不会被服务端识别为文档id,因此才会抛出查询字符串id为空的异常。
正确的请求方式有两种:
方案1:手动指定文档id
- 请求方法:
POST - 请求URL拼接规则:
http://<RavenDB服务地址>:<端口>/databases/<目标数据库名称>/docs?id=<你自定义的文档id>
示例:如果你要设置的id为adawd,数据库名为user_db,服务地址为192.168.3.4,端口为默认8080,URL为http://192.168.3.4:8080/databases/user_db/docs?id=adawd - 请求头需设置:
Content-Type: application/json - 请求体无需再包含id字段,仅保留业务字段即可:
{ "name": "genereicname", "password": "something" }
请求发送成功后会返回201状态码,创建的文档id就是你在查询参数中设置的值。
方案2:自动生成文档id
如果你不需要自定义id,可省略查询参数中的id字段,让RavenDB自动生成全局唯一id:
- 请求URL:
http://<RavenDB服务地址>:<端口>/databases/<目标数据库名称>/docs - 请求头和请求体配置和方案1一致,发送请求后同样返回201状态码,自动生成的id会放在响应头的
Location字段中返回。
补充注意事项
RavenDB的文档id属于文档元数据,默认不会存储到文档内容内部,你后续调用查询接口获取文档时,id会作为独立字段在响应头或批量查询结果的键位中返回,无需在业务字段中冗余存储id。
内容的提问来源于stack exchange,提问作者Jurkko
相关产品推荐
相关产品推荐

