在loopback4中添加请求主体架构

问题描述 投票:0回答:1

我是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"
}

这里:/explorer url

我想有一种简单的方法可以做到,但是我真的找不到任何东西。

routes openapi strongloop loopback4
1个回答
0
投票

FYI:Loopback4使用路由装饰器,该装饰器提供OpenAPI规范来描述端点。有关OpenAPI decorator in loopbac4 here的详细信息。现在解决以上问题。让我们创建:

  1. 用户登录的架构,即{“ username”:string,“ password”:string}在模式定义中,您还可以添加验证规则。

    const  UserLoginSchema = {
    type: 'object',
    required: ['email', 'password'],
    properties: {
      username: {
        type: 'string',
      },
      password: {
        type: 'string',
      },
    },
    }; ```
    
  2. 现在,您可以快速创建您的RequestBody文件进行登录。请记住,按照OpenApi规范,请求正文将包含描述,必填内容。

 export const UserLoginRequestBody = {
      description: 'Required input for login',
      required: true,
      content: {
        'application/json': {schema: UserLoginSchema},
      },
    };
  1. 现在您可以使用请求正文了。
  async login(
    @requestBody(UserLoginRequestBody) credentials: Credentials,
  ): Promise<{token: string}> {
..restCode

就这样,您就可以完成。

© www.soinside.com 2019 - 2024. All rights reserved.