• 使用Dredd建立API Cycle


    一.使用背景

      基于目前前后端分离的开发方式,后端开发在定接口的时候更注重面向数据,而前端开发偏向于设计。这就会导致前后端的期望和实现会有误差。Dredd框架可以使用标准swagger格式的文档来进行接口调用,使我们能使用文档记录并且可以使用在持续集成上面。

    二.Dredd工作原理

      跟随执行生命周期文档可以帮助你理解Dredd内部是如何运行,哪一步跟随哪一步。

    1.加载解析API描述文档
    • 报告解析国务和警告
    2.预执行API描述检查
    • URI模板参数缺少示例值
    • URI中必填参数
    • 报告不能解析的JSON
    • 报告无效的URI参数
    • 报告无效的URI模板
    3.从API描述文档中编译HTTP请求
    • 继承headers
    • 继承参数
    • 使用参数扩展URI模板
    4.加载hooks
    5.测试执行
    • Report test run start
    • Run beforeAll hooks
    • For each compiled transaction:
    • Report test start
    • Run beforeEach hook
    • Run before hook
    • Send HTTP request
    • Receive HTTP response
    • Run beforeEachValidation hook
    • Run beforeValidation hook
    • Perform validation
    • Run after hook
    • Run afterEach hook
    • Report test end with result for in-progress reporting
    • Run afterAll hooks
    6.报告测试结果统计

    三.QuitStart及Demo

    Dredd可以识别的API文档有两种:

    1.API Blueprint方式---(下面不做介绍,我主要是使用swagger标准格式的文档)

    2.OpenAPI 2----使用swagger标准格式的文档

    安装:

    1.安装node.js和npm

    -> brew install node

    或者从node.js官网下载https://nodejs.org/en/download/,二选其一即可

    ->  node --version(node.js需要8版本以上)

     -> npm --version

     2.安装Dredd

    -> npm install -g dredd  (因为我已经安装过了,重复安装提示的是update包)

      

     ->dredd --version

     3.在任意工作目录下创建一个文件夹,我创建的叫做Dredd_demo。在这个文件夹下面新建名为api-description.yml的文件

    -> mkdir Dredd_demo

    -> cd Dredd_demo

    -> touch api-description.yml

    -> vim api-description.yml

    将以下内容放到该文件中

    swagger: '2.0'
    info:
      version: '1.0'
      title: Example API
      license:
        name: MIT
    host: www.example.com
    basePath: /
    schemes:
      - http
    paths:
      /:
        get:
          produces:
            - application/json; charset=utf-8
          responses:
            '200':
              description: ''
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message

     4.运行API

    -> npm init

    -> npm install express --save

    创建一个新的文件app.js,写以下内容

    -> touch app.js

    -> vi app.js

    var app = require('express')();
    
    app.get('/', function(req, res) {
      res.json({message: 'Hello World!'});
    })
    
    app.listen(3000);
    

    5.测试API

    run server

    -> node app.js &

    测试API

    -> dredd api-description.yml http://127.0.0.1:3000

    运行结果中显示了报告查看地址

    访问这个地址看到你的报告如下

  • 相关阅读:
    Glide只播放一次Gif以及监听播放完成的实现方案
    Android 插件化开发(四):插件化实现方案
    Android 插件化开发(三):资源插件化
    Android 插件化开发(二):加载外部Dex文件
    Android 插件化开发(一):Java 反射技术介绍
    Android框架式编程之架构方案
    Android 项目优化(六):项目开发时优化技巧总结
    Android 项目优化(五):应用启动优化
    Android 项目优化(四):内存优化
    Android 项目优化(三):MultiDex 优化
  • 原文地址:https://www.cnblogs.com/panpan0301/p/13628728.html
Copyright © 2020-2023  润新知