JSON2SM

写json,生成可返回假数据的api以及api文档

Posted by ShenShen on 2016-07-19

JSON2SM

https://github.com/imshenshen/json2SM

做它嘎哈

在做项目,尤其是新项目开发时,通常接口甚至字段还没有定义。 前端同学通常需要等接口文档出来后才能开始大部分功能的开发。此工具想 尽量解决这一问题。为了不引入新的痛点,工具力图简单,快速,方便。 社区已经出现了一些相关工具,但是我的需求还不能得到很好的满足,所以 开始造,存在即合理。

这是什么

这是一个可以通过编写描述文件,自动生成一个APIServer以及自动生成对应 的接口文档的工具。前端同学可以在开发初期使用server返回的假数据开发 部分功能。前后端同学统一维护一组描述文件,实现接口设计变动后,假数据 自动变更,接口文档自动更新。

为了保证工具简单、快速,设定如下:

  • 对于APIserver返回的假数据,接口之间不做数据关联,比如保存的接口nametestName,取数据的接口name字段为任意假数据,跟保存接口无关
  • 可以使用ymal文件进行描述,默认值等,能少写东西就少写- -!

情景描述

有一个接口需要获取用户信息,可以写如下描述文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
route : get,/api/user/info
doc:
type: markdown
path: userInfo/user.md
title: 客户信息
params:
userId:
necessary: true
desc : 用户ID
result:
type: object
properties:
code: 200
data:
type: object
properties:
pkidStr:
realName:
desc: 姓名
faker: name.findName
sex:
type: integer
desc: '性别 0保密 1男 2女'
pattern: !!js/regexp /[0-2]/
email:
desc: Email
faker: internet.email
qq:
pattern: !!js/regexp /[1-9]{6,9}/
isVip:
type: integer
pattern: "(1|0)"
desc: 是否是会员
files:
desc: 用户名片
type: array
minItems: 0
maxItems: 3
items:
type: object
properties:
name:
desc: 文件名
faker: lorem.word
url:
faker: image.imageUrl

使用json2sm -s -p 8877可生成server,请求http://localhost:8877/api/user/info,返回如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
code: 200,
data: {
pkidStr: "no data",
realName: "魏 建辉",
email: "_57@gmail.com",
qq: "3953858",
files: [{
name: "alias",
url: "http://lorempixel.com/640/480"
},
{
name: "sit",
url: "http://lorempixel.com/640/480"
},
{
name: "et",
url: "http://lorempixel.com/640/480"
}]
}
}

使用json2sm -o build可生成接口文档到build/userInfo/user.md
pic

功能

  • 多个接口输入到1个markdown文档中
  • 支持$include,$extends模板等,参考jade|pug
    其他功能、语法、请参见项目说明

参考

  1. Faker
  2. randexp
  3. json-schema-faker