我是Loopback 4的新手,我确实很难处理文档,但该文档有时还不是最新的。我成功添加了身份验证系统和登录用户的路由。我的问题是在“ / explorer” URL上,我不知道如何在自定义路由的请求主体模式上添加示例值。
有我的路线:
@post('/users/login', {
responses: {
'200': {
description: 'Token',
content: {
'application/json': {
schema: {
type: 'object',
properties: {
token: {
type: 'string'
}
}
}
}
}
}
}
})
async login(
@requestBody() credentials: Credentials,
): Promise<{token: string}> {
// make sure user exist,password should be valid
const user = await this.userService.verifyCredentials(credentials);
// console.log(user);
const userProfile = await this.userService.convertToUserProfile(user);
// console.log(userProfile);
const token = await this.jwtService.generateToken(userProfile);
return Promise.resolve({token: token})
}
并且我想补充:
{
"username": "string",
"password": "string"
}
我想有一种简单的方法可以做到,但是我真的找不到任何东西。
FYI:Loopback4使用路由装饰器,该装饰器提供OpenAPI规范来描述端点。有关OpenAPI decorator in loopbac4 here的详细信息。现在解决以上问题。让我们创建:
用户登录的架构,即{“ username”:string,“ password”:string}在模式定义中,您还可以添加验证规则。
const UserLoginSchema = {
type: 'object',
required: ['email', 'password'],
properties: {
username: {
type: 'string',
},
password: {
type: 'string',
},
},
}; ```
现在,您可以快速创建您的RequestBody文件进行登录。请记住,按照OpenApi规范,请求正文将包含描述,必填内容。
export const UserLoginRequestBody = {
description: 'Required input for login',
required: true,
content: {
'application/json': {schema: UserLoginSchema},
},
};
async login(
@requestBody(UserLoginRequestBody) credentials: Credentials,
): Promise<{token: string}> {
..restCode
就这样,您就可以完成。