gpt4 book ai didi

node.js - TSOA Express App 返回无法获取端点

转载 作者:太空宇宙 更新时间:2023-11-04 01:26:15 25 4
gpt4 key购买 nike

我正在使用 Node.js 和 Typescript 构建 REST API tsoa并大肆索取文档。构建成功,swagger.json 已成功生成,但未找到端点。

src/app.ts

import * as express from "express"
import * as bodyparser from "body-parser"
import { RegisterRoutes } from "./routes/routes"
import * as swaggerUi from "swagger-ui-express"
import * as methodOverride from "method-override"

/** import all your routes here */
import "./routes/user"

/** End of Routes */
const app = express()

try {
const swaggerDocument = require("../swagger.json")
app.use("/docs", swaggerUi.serve, swaggerUi.setup(swaggerDocument))
} catch (err) {
console.error("Unable to read swagger.json", err)
}
app.use(bodyparser.json())
app.use(methodOverride())
RegisterRoutes(app)

export { app }

src/routes/user.ts

import {Get,Post,Route,Body,Query,Header,Path,SuccessResponse,Controller as Router } from "tsoa"
import { User, UserCreationRequest } from "../components/user"
import { UserController } from "../controllers/user"
@Route("users")
export class UsersRouter extends Router {
@Get("/{id}")
public async getUser(@Path("id") id: number): Promise<User> {
return new UserController().getUser(id)
}

@SuccessResponse("201", "Created") // Custom success response
@Post()
public async createUser(
@Body() requestBody: UserCreationRequest
): Promise<void> {
this.setStatus(201) // set return status 201
return Promise.resolve()
}
}

当我打开 /docs 时,它返回带有预期端点的 swagger UI,但是当我尝试使用 /users/{id} 等 api 时,它返回 404,我无法理解为什么,将不胜感激。

提前致谢

最佳答案

另一个答案是正确的,但 2.4.5 版本中有一个更新且更简单的选项(因此您可能需要升级 tsoa 才能利用它)。如果将 controllerPathGlobs 添加到 tsoa.json 中,它将找到任何具有 @Route 装饰器的类。因此,对于您来说,您需要以下 glob:

{
"routes": {
"controllerPathGlobs": [
"./src/routes/**/*.ts"
]
}
}

(请注意,您仍然需要包含其他配置选项 - 为了简洁起见,我刚刚删除了它们)

在此处了解更多信息:https://github.com/lukeautry/tsoa#consuming-generated-routes

关于node.js - TSOA Express App 返回无法获取端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57437322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com