如何接受application/vnd.api+json
的请求内容类型并拒绝其他任何内容?
另外如何使用Koa.js访问x-api-key
值?
提前致谢
答案 0 :(得分:4)
这是我对问题第一部分的尝试,即内容协商:
const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router();
//const dataAPI = require('../models/traffic');
router.get('/locations/:geohash/traffic/last-hour', (ctx, next) => {
// some code for validating geohash goes here ...
if (ctx.request.type=='application/vnd.api+json') {
//ctx.body = dataAPI.getTrafficData(ctx.params.geohash, 'hours', 1);
ctx.body = { status: "success" };
ctx.type = "application/vnd.api+json";
next();
}
else {
ctx.throw(406, 'unsupported content-type');
// actual error will be in JSON API 1.0 format
}
});
当我在Postman中提交Content-Type的值时,我在Postman中获得状态406 Not Acceptable
和unsupported content-type
,而不是application / vnd.api + json。否则,我会在正文中找到200 OK
和{ "status": "success"
。
<强>被修改强>
Haven没有找到更好的结果,但下面是提取x-api-key
值的快速而肮脏的方法。它适用于我的目的:
var key = ctx.request.headers['x-api-key']
答案 1 :(得分:2)
要获取标头:ctx.get('x-api-key');