Routes 在loopback4中添加请求主体架构
我是loopback 4的新手,我在文档方面遇到了一些困难,这些文档不是最新的。我成功地添加了身份验证系统和登录用户的路径。我的问题是“/explorer”URL,我不知道如何在自定义路由的请求主体架构上添加示例值 这是我的路线:Routes 在loopback4中添加请求主体架构,routes,openapi,strongloop,loopback4,Routes,Openapi,Strongloop,Loopback4,我是loopback 4的新手,我在文档方面遇到了一些困难,这些文档不是最新的。我成功地添加了身份验证系统和登录用户的路径。我的问题是“/explorer”URL,我不知道如何在自定义路由的请求主体架构上添加示例值 这是我的路线: @post('/users/login'{ 答复:{ '200': { 描述:'令牌', 内容:{ “应用程序/json”:{ 模式:{ 类型:“对象”, 特性:{ 代币:{ 键入:“字符串” } } } } } } } }) 异步登录( @requestBody()
@post('/users/login'{
答复:{
'200': {
描述:'令牌',
内容:{
“应用程序/json”:{
模式:{
类型:“对象”,
特性:{
代币:{
键入:“字符串”
}
}
}
}
}
}
}
})
异步登录(
@requestBody()凭据:凭据,
):承诺{
//确保用户存在,密码应有效
const user=wait this.userService.verifyCredentials(凭证);
//console.log(用户);
const userProfile=wait this.userService.converttoserprofile(用户);
//log(userProfile);
const token=wait this.jwtService.generateToken(userProfile);
返回Promise.resolve({token:token})
}
我想补充一点:
{
“用户名”:“字符串”,
“密码”:“字符串”
}
在这里:
我想有一种简单的方法可以做到这一点,但我真的找不到任何相关信息。仅供参考:loopback4使用路由装饰器,它提供了OpenAPI规范来描述端点。有关于的详细信息。
现在来解决上述问题。让我们创建:
const UserLoginSchema = {
type: 'object',
required: ['email', 'password'],
properties: {
username: {
type: 'string',
},
password: {
type: 'string',
},
},
}; ```
异步登录(
@requestBody(UserLoginRequestBody)凭据:凭据,
):承诺{
…restCode
这就完成了。谢谢@Madaky。在阅读了您的答案后,我只是直接在路径中添加了differents对象,以避免生成额外文件(我不知道这是否是一个好的做法),但它确实有效 在“@requestBody”函数中添加了最后一个代码和信息:
@post(“/users/login”{
答复:{
'200': {
描述:'令牌',
内容:{
“应用程序/json”:{
模式:{
类型:“对象”,
特性:{
代币:{
键入:“字符串”
}
}
}
}
}
}
}
})
异步登录(
//在上面@requestBody内部
@请求主体(
{
description:'登录所需的输入',
要求:正确,
内容:{
“应用程序/json”:{
模式:{
类型:“对象”,
必需:[“电子邮件”,“密码”],
特性:{
用户名:{
键入:“字符串”,
},
密码:{
键入:“字符串”,
},
},
},
}
},
}
)全权证书:全权证书,
):承诺{
//确保用户存在,密码应有效
const user=wait this.userService.verifyCredentials(凭证);
//console.log(用户);
const userProfile=wait this.userService.converttoserprofile(用户);
//log(userProfile);
const token=wait this.jwtService.generateToken(userProfile);
返回Promise.resolve({token:token})
}
它工作起来很有魅力,谢谢!很高兴听到。继续。要使工作独立,您可以在不同的文件中使用代码。这些文件更容易跟踪,以便以后进行修订
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