如何访问loopback4中的请求标头?

问题描述

我使用了如下所示的简单语句来访问loopback4中的标头。

console.log(request.headers);

但是它正在打印未定义。我要访问的示例请求标头位于图像中。 request header image

我收到了请求及其标头,这很好。只是由于我无法从request.headers中获得定义,所以我无法访问其标题

我是回送的初学者,请解释一下。

如果我必须使用bodyparser,那么我将如何在loopback4中使用它,因为它与express不同。

解决方法

更新

原始答案虽然有效,但不建议这样做。改用依赖项注入:

import {inject} from '@loopback/core';
import {get,param} from '@loopback/rest';

export class SomethingController {
  constructor() {}

  @get('/something')
  something(@param.header.string('x-your-header') yourHeader: string): void {
    // Use your header.
    // e.g. Log to console
    console.log(yourHeader);
  }
}

与REQUEST对象不同,这会剥离不必要的信息并提供内置的强制性。

进一步阅读


原始答案

如果您尝试访问Controller中的标头,则可以注入REQUEST对象:

import {inject} from '@loopback/core';
import {get,Request,RestBindings} from '@loopback/rest';

export class SomethingController {
  constructor(@inject(RestBindings.Http.REQUEST) private req: Request) {}

  @get('/something')
  something(): void {
    // Get the headers
    this.req.headers;
  }
}
,

您还可以使用上下文示例

import {inject} from '@loopback/core';
import {
  post,RequestContext
} from '@loopback/rest';

export class UserController {
  constructor(
    @inject.context() 
    public context: RequestContext,) {}

    @post('/users/logout',{
    responses: {
      '200': {
        description: 'Return success',content: {
          'application/json': {
            schema: {
              type: 'object'               
            },},})
     async logout(): Promise<object> {
    // ensure the token exists
    const authHeader = this.context.request.headers.authorization;
    if(authHeader && authHeader.split(" ")[1]){
      //    remove token
      return {code:204,status: true,message:'Logout successful'};
    }else{
      return {code: 404,status: false,message:'Something went wrong'};
    }    
  }
}
,

sequence.ts中,request对象是通过context调用的。

  const {request,response} = context;
  console.log(request.headers)

添加登录sequence.ts以获得请求标头。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...