2017-10-11 3 views
0

Wie man Anfrage Inhaltstyp von application/vnd.api+json annehmen und alles andere zurückweisen?Wie verarbeitet man Anfrage Header in Koa.js?

Auch wie kann ich den Wert x-api-key mit Koa.js zugreifen?

Vielen Dank im Voraus

+0

Was haben Sie versucht? – Evert

+0

if (! Ctx.accepts ('application/vnd.api + json')) { ctx.throw (406, 'nicht unterstützter Inhaltstyp'); } // aber nicht den Status 406 in Postman bekommen. Für x-api-key kann keine Dokumentation gefunden werden – Roobie

+0

Fügen Sie ein vollständiges, reproduzierbares Skript in Ihre Frage ein, wenn Sie Hilfe benötigen! – Evert

Antwort

0

Dies ist mein Versuch, den ersten Teil der Frage, Content-Negotiation:

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

Ich Status bekommen 406 Not Acceptable und unsupported content-type in Postman, wenn ich den Wert für Content- einreichen Geben Sie Postman alles ein, das nicht Anwendung/vnd.api + json ist. Ansonsten bekomme ich die Station 200 OK und { "status": "success" in den Körper.

bearbeitet

keine besseren dazu aber unten ist eine schnelle und schmutzige Art und Weise zu extrahieren, um den Wert von x-api-key gefunden. Es funktioniert für meinen Zweck:

var key = ctx.request.headers['x-api-key'] 
Verwandte Themen