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

Posted

技术标签:

【中文标题】如何在 json-server 请求中找到 request.headers?【英文标题】:How can I find the request.headers in a json-server request? 【发布时间】:2018-03-16 21:56:27 【问题描述】:

如果客户端在其请求的标头中发送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) 函数需要检查请求头。我的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'

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

就是这样 - 非常感谢!

以上是关于如何在 json-server 请求中找到 request.headers?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 json-server 保存时间戳?

如何在json-server上添加标头?

如何在 json-server 上添加标头?

expressjs req.url 路径如何成为另一个url?

json-server在发布请求后出现错误

如何将 JSON-Server 与具有不同端口的另一台服务器连接?