如何在json-server请求中找到request.headers?

问题描述:

我试图让我的模拟API(json-server)以一种方式作出响应,如果客户端发送AUTH_TOKEN在他的请求头,并以另一种方式,如果他没有。这段代码就是我使用的,它来自json-server文档。如何在json-server请求中找到request.headers?

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

当然这个工程,除了isAuthorized(req)函数需要检查请求头。我的isAuthorized功能看起来如下(伪)。

const isAuthorized = (req) => { 
    return req.getHeader('AUTH_TOKEN') ? true : false; 
} 

这不起作用,因为req没有getHeader方法,但我的意图是明确的 - 我需要检查令牌,如果存在返回true,否则为false。

我该如何做到这一点?

req.headers返回以下内容。

{ 
    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' 
} 

这实际上与我在实际请求中发送的标头没有任何关系。

下面是使用expressjs。 看着他们的文档(https://expressjs.com/en/4x/api.html),好像你可以使用req.get('Header name here')

+0

就是这样 - 非常感谢! – miphe