文档章节

koa框架 mp2 node服务搭建swagger服务

hkaikai
 hkaikai
发布于 2018/07/04 11:59
字数 727
阅读 752
收藏 2

说明:用koa2搭建静态文件服务器,mp2管理node服务,搭建swagger-ui和swagger-editor服务,项目地址:koa-swagger

1、环境搭建

  • 安装最新版nodejs
  • 新建文件夹koa-swagger,在文件夹内创建swagger-ui与swagger-editor文件夹,创建package.json、app.js文件

2、下载swagger-ui

      打开swagger-ui github主页,下载zip压缩包,解压后把dist目录下的所有文件拷贝到/koa-swagger/swagger-ui文件夹下面

3、下载swagger-editor

      打开swagger-editor github主页,下载zip压缩包,解压后把dist目录下的所有文件拷贝到/koa-swagger/swagger-editor件夹下面

4、编辑package.json文件

{
  "name": "koa-swagger",
  "scripts": {
    "start": "pm2 start app.js --name=swagger"
  },
  "dependencies": {
    "koa": "^2.0.0",
    "koa-bodyparser": "^3.2.0",
    "koa-compress": "^2.0.0",
    "koa-convert": "^1.2.0",
    "koa-multer": "^1.0.2",
    "koa-router": "^7.0.1",
    "koa-static": "^4.0.2",
    "koa-static-cache": "^5.1.1",
    "koa2-cors": "^2.0.5"
  }
}

5、编辑app.js文件

const Koa = require('koa')
const app = new Koa()
const path = require('path')
const bodyParser = require('koa-bodyparser')
const convert = require('koa-convert')
const staticCache = require('koa-static-cache')
const compress = require('koa-compress')
const cors = require('koa2-cors')

// 解析请求体
app.use(bodyParser())

// 跨域设置
app.use(convert(cors({
	allowMethods: ['GET', 'POST'],
    allowHeaders: ['Content-Type', 'Accept'],
    origin: function(ctx) {
        return '*' // 本地环境
    }
})))

// 中间件 设置gzip
app.use(compress({
    threshold: 2048,
    flush: require("zlib").Z_SYNC_FLUSH
}))

// 静态文件服务,把koa-swagger作为根目录
app.use(convert(staticCache(path.join(__dirname, './'), {
    maxAge: 365 * 24 * 60 * 60,
    dynamic: false // 是否动态监测文件变化
})))

// 服务端口
const port = 8882

// 启动程序,监听端口
app.listen(port, () => {
	console.log(`listening on port ${port} for swagger`)
})

6、安装依赖

      进入koa-swagger文件夹,命令行输入npm指令

npm install -g pm2
npm install

7、启动服务

      进入koa-swagger文件夹,命令行输入npm指令

npm run start

命令行窗口出现如下效果表示成功

8、预览效果

     打开浏览器输入:http://localhost:8882/swagger-ui/index.html和http://localhost:8882/swagger-editor/index.html查看

9、指定swagger.json文件

     打开/koa-swagger/swagger-ui/index.html,编辑Build a system部分

// Build a system
const ui = SwaggerUIBundle({
    url: "http://localhost:8882/swagger.json", // 修改部分,改为自己的json配置文件,用swagger-editor编辑并导出来
    dom_id: '#swagger-ui',
    deepLinking: true,
    presets: [
        SwaggerUIBundle.presets.apis,
        SwaggerUIStandalonePreset
    ],
    plugins: [
        SwaggerUIBundle.plugins.DownloadUrl
    ],
    layout: "StandaloneLayout"
})

     把swagger-editor编辑并导出的swagger.json文件拷贝到/koa-swagger目录,我的swagger.json文件内容如下

swagger: "2.0"
info:
  version: "0.0.1"
  title: "react-talkweb"
host: localhost:8881
tags:
- name: "test"
  description: "测试接口"
paths:
  /test/login:
    post:
      tags:
      - "test"
      summary: "登录接口"
      parameters:
      - name: "param"
        in: "body"
        description: '登录接口参数'
        required: true
        schema:
          $ref: '#/definitions/loginParam'
      responses:
        200:
          description: "Success"

  /test/portal:
    post:
      tags:
      - "test"
      summary: "选择系统接口"
      parameters:
      - name: "param"
        in: "body"
        description: "选择系统接口参数"
        required: true
        schema:
          $ref: '#/definitions/portalParam'
      responses:
        200:
          description: "Success"
  
  /test/home:
    post:
      tags:
      - "test"
      summary: "首页接口"
      parameters:
      - name: "param"
        in: "body"
        description: "首页接口参数"
        required: true
        schema:
          $ref: '#/definitions/homeParam'
      responses:
        200:
          description: Success

definitions:
  loginParam:
    properties:
      username:
        type: "string"
        default: "admin"
      password:
        type: "string"
        default: "test@123"
    required:
      - "username"
      - "password"
  portalParam:
    properties:
      id:
        type: "string"
    required: 
      - "id"
  homeParam:
    properties:
      userid:
        type: "string"
      systemid:
        type: "string"
    required: 
      - "userid"
      - "systemid"

10、重启pm2服务

pm2 restart all

 

© 著作权归作者所有

hkaikai

hkaikai

粉丝 5
博文 15
码字总数 7236
作品 1
长沙
前端工程师
私信 提问
加载中

评论(0)

kaikai/koa-swagger

koa-swagger 1、环境搭建 安装最新版nodejs 新建文件夹koa-swagger,在文件夹内创建swagger-ui与swagger-editor文件夹,创建package.json、app.js文件 2、下载swagger-ui 打开swagger-ui gi...

kaikai
2018/07/17
0
0
使用typescript改造koa开发框架

原文地址:使用typescript改造koa开发框架 强类型的 TypeScript 开发体验和维护项目上相比 JavaScript 有着明显的优势,那么对常用的脚手架进行改造也就势在必行了。 接下来开始对基于 koa ...

Jeff.Zhong
02/04
0
0
Angular的开发脚手架Oniangular使用讲解

Oniangular 一个Angular开发的脚手架,前端UI框架使用NG-ZORRO,服务端用koa2。 相关技术:Angular2、Koa2、NG-ZORRO等。 项目使用的是Angular5,这里用Angular2代称是便于关联网友搜索。 实...

小虎Oni
2017/12/13
0
0
Vue SSR技术方案落地实现—构建同构应用

Vue SSR技术方案落地实现—构建同构应用 一、基本知识扫盲 1、何为服务器端渲染? 1)、服务器端渲染:这种技术方案在前端领域处于蛮荒时代就已出现,当时的解决方案主要是后台开发通过模板引...

宝林牧云
2019/06/05
0
0
入职第二天:使用koa搭建node server是种怎样的体验

今天是我入职第二天,leader跟我说,昨天配置好了服务端渲染的文件,今天就先研究研究如何使用koa来搭建一个node server吧! 按照惯例,我去koa官网查了一下什么是koa,结果官网很简单的一句...

闰土大叔
2018/05/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

docker上启动nginx,并配置修改nginx的配置文件

1.使用docker 下载nginx 镜像 docker pull nginx 2.启动nginx docker run --name nginx -p 80:80 -d nginx 这样就简单的把nginx启动了,但是我们想要改变配置文件nginx.conf ,进入容器,命令...

yuxw
24分钟前
45
0
管道符|重定向与环境变量

重定向 管道符 通配符 转义符 环境变量 重定向 重定向(把命令和文件结合起来使用) 输入重定向< 将文件重定向到命令里,让文件去匹配命令执行,与正常的名命令对文件的执行方向相反,但结果一...

Venus7
26分钟前
32
0
恢复丢失的Joomla密码的最常用方法

忘记密码是很常见的事情。有些用户将密码保存在其默认浏览器内存中,几个月后您可能会忘记任何事情。我们中有些人甚至不记得他们在Joomla安装时发出的密码。本文介绍了如何重置Joomla管理员密...

六艺网络专注于Joomla
28分钟前
46
0
更改后如何重新加载.emacs?

如何才能使Emacs重新加载在.emacs更新的所有定义,而无需重新启动Emacs? #1楼 在您的初始化文件中定义它,并通过Mx reload-user-init-file调用 (defun reload-user-init-file() (interact...

javail
35分钟前
50
0
我眼中的分布式系统可观测性

作者:黄东旭,PingCAP 联合创始人兼 CTO 位于 M87 中心的特大质量黑洞示意图(© EHT Collaboration) 今天的文章我想从这张模糊的照片说起。 相信很多小伙伴对这张照片并不陌生,这是去年人...

TiDB
35分钟前
73
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部