如何在 node.js + Express 中同时支持 json 和 jsonp 响应?
Posted
技术标签:
【中文标题】如何在 node.js + Express 中同时支持 json 和 jsonp 响应?【英文标题】:How to support both json and jsonp responses in node.js + Express? 【发布时间】:2014-10-05 13:10:38 【问题描述】:我有一个 REST API 服务,使用 Node.js + Express 编写,目前支持 JSON 格式的响应。
现在,我还需要添加对 JSONP 响应的支持,因此每个人都可以通过在请求字符串中添加 alt=JSONP 来获得它。
那么,我的问题是,最好的方法是什么?
可能,有模式,还是活生生的例子?
谢谢!
【问题讨论】:
【参考方案1】:官方支持的方法如下--
首先,设置你的 JSONP 回调参数名称:
app.set('jsonp callback name', 'callback');
然后,将res.json
或res.send
的所有实例更改为res.jsonp
。
例如res.jsonp(500, error: 'message' )
如果在请求中提供了 callback
参数,则响应将使用提供的函数名称包装为 JSONP,但如果不是,它只会返回 JSON。
然后,这将返回 JSONP: GET /myapi/v1/users?callback=responseCallback
这不会: 获取 /myapi/v1/用户
参考http://expressjs.com/4x/api.html#res.jsonp
【讨论】:
但是 POST 或 DELETE 请求呢?据我所知,它不适用于 JSONP。 它应该以完全相同的方式工作。就 express 而言,GET/POST/DELETE/etc 都是一样的,只是发送方式不同。至于发出这些请求,您必须使用方法覆盖。 github.com/expressjs/method-override 很好的答案!我疯狂地寻找它。 显然jsonp中没有post或delete请求。以上是关于如何在 node.js + Express 中同时支持 json 和 jsonp 响应?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Node.js / Express.js 中将中间件放在它自己的文件中
如何在 node.js (express) 中全局设置内容类型
如何在超级终端中停止运行 Node.js (Express) 服务器