J'essaie de faire en sorte que mon simulacre d'API (json-server) réponde d'une manière si le client a envoyé un AUTH_TOKEN
dans les en-têtes de sa requête, et d'une autre manière s'il ne l'a pas fait. Ce code est ce que j'utilise, il vient des docs de json-server.Comment puis-je trouver les request.headers dans une requête json-server?
const jsonServer = require('json-server')
const server = jsonServer.create()
const router = jsonServer.router('db.json')
const middlewares = jsonServer.defaults()
server.use(middlewares)
server.use((req, res, next) => {
if (isAuthorized(req)) { // add your authorization logic here
next() // continue to JSON Server router
} else {
res.sendStatus(401)
}
})
server.use(router)
server.listen(3000,() => {
console.log('JSON Server is running')
})
Bien sûr, cela fonctionne, à l'exception de la fonction isAuthorized(req)
doit vérifier les en-têtes de demande. Ma fonction isAuthorized
ressemble à ceci (pseudo).
const isAuthorized = (req) => {
return req.getHeader('AUTH_TOKEN') ? true : false;
}
Cela ne fonctionne pas, puisque le req
n'a pas une méthode getHeader
, mais mes intentions sont claires - je dois vérifier le jeton, si elle existe return true, sinon false.
Comment puis-je y parvenir?
req.headers
renvoie les éléments suivants.
{
host: 'localhost:3000',
map: '[object Object]',
'if-none-match': 'W/"a...........5r/3c"',
accept: 'application/json, text/plain, */*',
'user-agent': 'App/1 CFNetwork/887 Darwin/16.7.0',
'accept-language': 'en-us',
'accept-encoding': 'gzip, deflate',
connection: 'keep-alive'
}
Ce qui n'a vraiment rien à voir avec les en-têtes que j'envoie dans ma demande actuelle.
C'est tout - très apprécié! – miphe