Skip to content

swagger-node(swagger and node.js) #241

@uniquejava

Description

@uniquejava

项目地址: https://github.com/swagger-api/swagger-node
官方文档: https://github.com/swagger-api/swagger-node/tree/master/docs
非常重要的官方文档(如: default.yaml的配置)
https://github.com/apigee-127/swagger-node-runner/releases/tag/v0.6.0

必须要配置_swagger_params_parser不然连req.body都取不到.

npm i -g swagger
swagger project create hello-world
swagger project start
swagger project edit

但是这个swagger project edit打开的界面特别LOW且buggy, 我是直接到这里去编辑yaml文件: http://editor.swagger.io

使用swagger命令生成的项目结构:
image

测试: http://127.0.0.1:10010/hello?name=Scott

内置的swagger-express-mw还是0.1.0版本, editor界面十分之丑陋.

可以将其升级到swagger-express-mw到0.7.0:
详见: https://github.com/swagger-api/swagger-node/issues/551

0.7.0不再自带swagger-tools需要单独安装

npm i swagger-tools

在app.js中

const SwaggerUi = require("swagger-tools/middleware/swagger-ui");

swaggerExpress.register(app);
let defaultOptions = {
  apiDocs: "/xxxxx/api-docs",
  swaggerUi: "/xxxxx/docs"
};

if (isDev) {
  app.use(SwaggerUi(swaggerExpress.runner.swagger, defaultOptions));
  let swaggerUiURL = `http://localhost:${port}${defaultOptions.swaggerUi}`;
  logger.info(`Swagger UI is available at:\n${swaggerUiURL}`);
}

OpenAPI specification(v2 / v3)
https://swagger.io/resources/open-api/

See swagger and OpenAPI in general #167

swagger project edit会打开chrome browser在线编辑yaml文件, 这个文件和项目中的api/swagger/swagger.yaml是同步变化的.

x-swagger-router-controller指定使用api/controllers/下的哪个文件处理请求
operationId 指定应该调用controller中的哪个方法

https://stackoverflow.com/questions/48111459/how-to-define-a-property-that-can-be-string-or-null-in-openapi-swagger

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions