添加时restheart空响应

时间:2018-01-22 22:38:49

标签: json restheart

Restheart 会为文档添加返回空响应(使用PUT或POST方法)。

是否可以修改配置,以便返回有效的json响应:

比如{}

有没有办法让restheart返回插入文档的id或objectId?

版本:

  • restheart 3.0.0
  • mongoDb 3.4.1

2 个答案:

答案 0 :(得分:0)

不,没有这样的配置。根据HTTP规范,RESTHeart通过HTTP头返回PUT或POST的结果。这是有道理的,因为这些都是元数据。一般来说,HTTP规范试图强制分隔数据(通常在响应主体中)和元数据(通常在HTTP头中)。

例如,以下curl命令将JSON文档发布到MongoDB集合中:

$ curl -i -H "Content-Type: application/json" -X POST http://dbapi.io/db/coll -d '{"from":"mkjsix", "message": "MongoDB rocks!"}'

HTTP/1.1 201 Created
Server: nginx/1.9.15
Date: Tue, 23 Jan 2018 16:29:31 GMT
Content-Type: application/json
Content-Length: 0
Location: http://dbapi.io/db/coll/5a6762eb74efb71411471489
Connection: keep-alive
X-Powered-By: restheart.org
Access-Control-Expose-Headers: Location, ETag, Auth-Token, Auth-Token-Valid-Until, Auth-Token-Location, X-Powered-By
Access-Control-Allow-Origin: *
ETag: 5a6762ebc9e77c0007974479
Access-Control-Allow-Credentials: true

如您所见,Location标头包含新创建的文档的URI,该文件实际上以MongoDB生成的对象ID结尾。如果你改为使用PUT动词,那么你就是自己提供id。

答案 1 :(得分:0)

谢谢mturatti!

对我来说太糟糕了。 我正在使用RESTAdapter,我可以在EmberJS应用程序中自定义。

RESTAdapter仍在等待JSON响应:我通过将Ajax查询的dataType从“JSON”更改为“*”来找到解决方案。

但缺少以JSON格式返回的id更成问题。

我必须找到一种方法来生成JSON响应,方法是包含从Location头检索的插入对象的id

标题中的那个,

Location: http://dbapi.io/db/coll/5a6762eb74efb71411471489

我想回复一下身体:

{"_id":"5a6762eb74efb71411471489"}

在等待找到解决方案时, 我使用ember addon生成客户端uuid,它解决了问题

但遗憾的是不使用mongo生成的id, 插入对象的id不是元数据