【发布时间】:2015-02-18 17:07:52
【问题描述】:
我正在尝试将流星与 Iron-router 一起用于简单的 RESTful API,并且我已经验证,当我对我的 api 进行 POST 时,如果标头类型设置为“Content-Type: application/json”,那么我可以使用 var thisVar = this.request.body.myKey 解析 http 请求的正文,但是如果我不指定 Content-Type 当然默认是 application/x-www-form-urlencoded 并且正文不会被解析为 json。
然后我的问题是,我如何才能将我的内容“转换”为 JSON,因为它确实是 JSON。现在,你们中的大多数人可能会想“为什么不在 POST 请求中将 content-type 更改为 json”。嗯,答案是我不控制 POST,这是一个 3rd 方软件。我可以添加一个增强请求,但这需要几个月的时间,而且可能永远不会发生。
因此,我的问题再次是:在我的 Iron-router 中,我可以将我的 body 的内容类型“转换”为 json,以便我可以使用 var thisVar = this.request.body.myKey 格式轻松解析它
编辑
让我澄清一下,我已经有一个基本的工作 RESTful API 与 Iron-router 一起使用。当我将 curl 和 POST 与一些 json 数据一起使用并指定内容类型为 json 时,就像 curl -XPOST -H "Content-Type:application/json" -d"{\"myKey\":\"myValue\"}" http://localhost:3000/api/insert 那样,然后在我处理 POST 的路线中,我可以使用 var thisVar = this.request.body.myKey 解析正文,然后插入到我的 mongodb 等...没问题。
但是,客户端在未指定内容类型的情况下发布,因此默认值为 application/x-www-form-urlencoded,因此当我使用以下代码 var thisVar = this.request.body.myKey 时,值 thisVar 未定义,所以我不能轻松解析 http 请求的正文。
有意义吗?
【问题讨论】:
标签: javascript json meteor http-headers iron-router