如何在 json-server 请求中找到 request.headers?
How can I find the request.headers in a json-server request?
如果客户在其请求的 headers 中发送 AUTH_TOKEN
,我正在尝试让我的模拟 API (json-server) 以一种方式响应,如果他不这样做,则以另一种方式。这段代码是我正在使用的,它来自 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')
})
当然可以,除了 isAuthorized(req)
函数需要检查请求 headers。我的 isAuthorized
函数如下所示(伪)。
const isAuthorized = (req) => {
return req.getHeader('AUTH_TOKEN') ? true : false;
}
这不起作用,因为 req
没有 getHeader
方法,但我的意图很明确 - 我需要检查令牌,如果它存在 return 为真,否则为假。
我怎样才能做到这一点?
req.headers
return以下。
{
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'
}
这与我在实际请求中发送的 headers 没有任何关系。
下面是使用expressjs。
查看他们的文档 (https://expressjs.com/en/4x/api.html) 似乎可以使用 req.get('Header name here')
.
如果客户在其请求的 headers 中发送 AUTH_TOKEN
,我正在尝试让我的模拟 API (json-server) 以一种方式响应,如果他不这样做,则以另一种方式。这段代码是我正在使用的,它来自 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')
})
当然可以,除了 isAuthorized(req)
函数需要检查请求 headers。我的 isAuthorized
函数如下所示(伪)。
const isAuthorized = (req) => {
return req.getHeader('AUTH_TOKEN') ? true : false;
}
这不起作用,因为 req
没有 getHeader
方法,但我的意图很明确 - 我需要检查令牌,如果它存在 return 为真,否则为假。
我怎样才能做到这一点?
req.headers
return以下。
{
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'
}
这与我在实际请求中发送的 headers 没有任何关系。
下面是使用expressjs。
查看他们的文档 (https://expressjs.com/en/4x/api.html) 似乎可以使用 req.get('Header name here')
.