我使用下面这样的简单语句来访问loopback4中的标头。
console.log(request.headers);但它是没有定义的印刷。我想要访问的请求头示例在图像中。请求头图像
我正在接收请求及其标题,这是非常好的。这只是因为我无法访问它的头部,因为我正在从request.headers中得到未定义的信息。
我是一个环回初学者,所以请解释它。
如果我必须使用一个from解析器,那么我必须如何在loopback4中使用它,因为它与express不同。
发布于 2020-08-14 10:01:23
更新
最初的答案虽然有效,但并不是推荐的方法。使用依赖注入代替:
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);
}
}与请求对象不同的是,它去掉了不必要的信息,并提供了内置强制。
进一步阅读
原始答案
如果试图访问Controller中的标头,则可以注入请求对象:
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;
}
}发布于 2020-08-14 09:17:43
在sequence.ts中,request对象通过context调用。
const {request, response} = context;
console.log(request.headers)添加登录sequence.ts以获取请求头。
发布于 2020-08-14 13:23:39
您还可以使用上下文,例如
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'};
}
}
}https://stackoverflow.com/questions/63399686
复制相似问题