像swagger / swashbuckle但是对于node.js?

时间:2015-11-17 20:56:30

标签: express swagger swashbuckle

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

1 个答案:

答案 0 :(得分:3)

我一直在研究这个问题,对你有帮助的项目是swagger-node-expressswagger-ui,应该作为swagger-node-express的依赖。 Swagger-node-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');
    }
  }
};

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

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

swagger.configureSwaggerPaths("", "/docs", "");

向您展示了理论上提供您所要求的工具,让我解释为什么我得出的结论是我不打算使用它们。

  1. 需要进行大量的代码更改 - 这比创建更少 你自己的swagger.yml文件?我不这么认为。
  2. 创建swagger.yml文件的手不太可能制造你的项目。
  3. 虽然swagger-node-express尚未被删除,但它的github repo不再存在,它被包裹在swagger-node中,但该项目并没有真正提及它
  4. 我要警惕任何意味着我需要快递的工具 - 这不是我想做的事。
  5. <强> TL; DR: 可能会有很多代码更改 - 可能不是你的事情。