web-dev-qa-db-ja.com

Koa.jsでリクエストヘッダーを処理する方法は?

リクエストコンテンツタイプapplication/vnd.api+jsonを受け入れ、それ以外のものを拒否するにはどうすればよいですか?

また、Koa.jsを使用してx-api-key値にアクセスするにはどうすればよいですか?

前もって感謝します

5
Roobie

ヘッダーを取得するには:ctx.get('x-api-key');

7
Yorkshireman

これは、質問の最初の部分であるコンテンツネゴシエーションに対する私の試みです。

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
    }
});

Application/vnd.api + json以外のものをPostmanでContent-Typeの値を送信すると、Postmanでステータス406 Not Acceptableunsupported content-typeが表示されます。それ以外の場合は、本体にステーション200 OK{ "status": "success"を取得します。

編集済み

これに適した方法は見つかりませんでしたが、以下はx-api-keyの値を抽出するための迅速で汚い方法です。それは私の目的のために機能します:

var key = ctx.request.headers['x-api-key']
6
Roobie