像 swagger/swashbuckle 但对于 node.js?

PvP*_*ten 5 express swagger swashbuckle

是否有任何 node express 工具可以为现有项目自动生成 swagger 文档?类似于 swashbuckle?

小智 5

我也一直在研究这个,可以帮助你的项目是swagger-node-expressswagger-ui,应该作为 swagger-node-express 的依赖。Swagger-node-express 包装了 express 并将其公开为一个新接口,这意味着您将进行代码更改以使其工作。这就是路线的样子(取自他们的文档)

 var findById = {
  'spec': {
    "description" : "Operations about pets",
    "path" : "/pet.{format}/{petId}",
    "notes" : "Returns a pet based on ID",
    "summary" : "Find pet by ID",
    "method": "GET",
    "parameters" : [swagger.pathParam("petId", "ID of pet that needs to be fetched", "string")],
    "type" : "Pet",
    "errorResponses" : [swagger.errors.invalid('id'), swagger.errors.notFound('pet')],
    "nickname" : "getPetById"
  },
  'action': function (req,res) {
    if (!req.params.petId) {
      throw swagger.errors.invalid('id');
    }
    var id = parseInt(req.params.petId);
    var pet = petData.getPetById(id);

    if (pet) {
      res.send(JSON.stringify(pet));
    } else {
      throw swagger.errors.notFound('pet');
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

“宠物”类型仍然由您定义,我不会在这里重写他们的文档。

这将生成一个文件,swagger-ui 可以使用该文件为您提供一个自包含的自文档系统。swagger-node-express 的文档足以让它设置(不要忘记设置 swagger 路径,我做到了)。

swagger.configureSwaggerPaths("", "/docs", "");
Run Code Online (Sandbox Code Playgroud)

在向您展示了理论上可以满足您要求的工具之后,让我解释为什么我得出结论,我不会使用它们。

  1. 需要进行大量代码更改 - 它真的比创建自己的 swagger.yml 文件少吗?我不这么认为。
  2. 手动创建 swagger.yml 文件不太可能阻止您的项目。
  3. 虽然 swagger-node-express 还没有被弃用,它的 github repo 不再存在,它被包装到 swagger-node 中,但那个项目并没有真正提到它
  4. 我会警惕任何意味着我需要包装快递的工具 - 这不是我想要做的事情。

TL;DR: 有很多代码更改是可能的 - 可能不是你想要的。