2017-10-11 14 views
0

Comment accepter une demande de type de contenu application/vnd.api+json et rejeter quoi que ce soit d'autre?Comment traiter les en-têtes de requête dans Koa.js?

Comment puis-je accéder à la valeur x-api-key en utilisant Koa.js?

Merci à l'avance

+0

Qu'avez-vous essayé? – Evert

+0

if (! Ctx.accepts ('application/vnd.api + json')) { ctx.throw (406, 'type de contenu non pris en charge'); } // mais n'obtient pas le statut 406 dans Postman. Pour x-api-key ne trouve aucune documentation – Roobie

+0

Incluez un script complet et reproductible dans votre question si vous avez besoin d'aide! – Evert

Répondre

0

C'est ma tentative de la première partie de la question, la négociation de contenu:

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

Je reçois le statut 406 Not Acceptable et unsupported content-type en Postman lorsque je soumets la valeur Content- Tapez dans Postman tout ce qui n'est pas application/vnd.api + json. Sinon, je reçois la station 200 OK et { "status": "success" dans le corps.

sous la direction

n'ont pas trouvé mieux à cela, mais ci-dessous est un moyen rapide et sale pour extraire la valeur de x-api-key. Cela fonctionne pour mon but:

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