Skip to content
/ MockApi Public

仅调用【单个】【命令式接口】就可获取各种【定制结构】的【模拟数据】,MockApi为前端/移动端开发者提供贴心服务。

License

Notifications You must be signed in to change notification settings

funuf/MockApi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简介

如果你是前端/移动端开发人员,否和我一样,经常面临下述局面:

  1. 尝试实现(或学习)某个框架/控件的时候,没有合适的接口提供数据;
  2. 工作中页面已搭完,仅剩数据请求的逻辑要实现,无奈同事的接口还没有整理出来。

此时,要么干等,要么自己动手编码进行实现,再不行了去扒拉一些免费api凑合着用。

如果有一个项目,或者一个api,能够在开发(学习)阶段输出可自由定制结构的数据,岂不是能大大提高咱的效率?

MockApi就是为此而诞生的服务端项目。它旨在为前端/移动端开发者提供模拟数据。即使不会进行服务端的API接口编码,也可通过发送http请求获取各式占位数据。

安装

  1. 【Windows】MockApi是一个Spring Boot 工程,如果你有Java开发能力,可以直接clone该项目,在IDE中运行体验;

  2. 【Windows】下载MockApi.jar,然后在jar包所在目录启动命令行(Win+R),执行java -jar MockApi.jar命令在10240端口运行,也可执行java -jar MockApi.jar --server.port=xxx自定义端口;

  3. 【Windows】方式2的缺点是不能关闭命令行窗口,否则服务也将终止。建议将MockApi.jar安装为Windows服务,方法如下:

    • 下载MockApi.jar
    • 下载winsw项目的WinSw.Net4.exe文件;
    • MockApi.jarWinSw.Net4.exe置于同一文件夹,并将WinSw.Net4.exe重命名为MockApi.exe
    • 在文件夹下创建MockApi.xml,并写入以下内容:
        <service>
         <id>MockApi</id>
         <name>MockApi</name>
         <description>MockApi is a provide mock data project.</description>
         <!-- java环境变量 -->
         <env name="JAVA_HOME" value="%JAVA_HOME%"/>
         <executable>java</executable>
           <arguments>-jar "C:\Users\Administrator\Desktop\MockApi\MockApi.jar"</arguments>
         <!-- 开机启动 -->
         <startmode>Automatic</startmode>
         <!-- 日志配置 -->
         <logpath>%BASE%\log</logpath>
         <logmode>rotate</logmode>
     </service>
    
    • 命令行定位到当前目录,执行```MockApi.exe install``即可;
    • 去Windows服务列表中启动程序,win+查找 services.msc
    • 若要卸载Windows服务,在命令行中执行sc delete serverName
  4. 【Linux】下载MockApi.jar,参考这里运行jar包。

使用

命令式接口

命令,就是要让一个系统执行一件事,比如git clone origin https://github.com/he110fun/MockApi.git就是一条让git执行克隆仓库的命令。 所谓命令式接口,指的是目标接口的请求路径是命令式的。

比如http://localhost:10240/mockapi get integer表示的是要请求一个整形数字,本次请求将返回如下数据:

{
    "code": 100, // --------------响应码
    "data": 11,  // --------------随机数字
    "time": 1584697248365 // -----当前时间
}

再比如http://localhost:10240/mockapi get image表示的是要请求一张图片,本次请求将返回如下数据:

{
    "code": 100,
    "data": "https://up.enterdesk.com/edpic/3f/2a/7b/3f2a7bf15fd029ee577391e6e958173b.jpg", //---------随机图片
    "time": 1584697365922
}

命令结构

MockApi的命令由若干部分组成,如 mockapi cmd type topic limit count hit file delay,除了mockapicmd的顺序固定,其他部分无顺序限制。各部分的详细定义及取值见下表:

组成 说明 支持写法 备注
mockapi 合法命令须以该单词开头 mockapi 【必】
cmd 代表本次操作的动作,目前支持get/list/json。
get表示需要一个元素;list表示需要一个集合;json表示需要自定义json结构。
get
list
json
【必】
type 表示元素类型。目前支持integer/float/boolean/time/text/image/video。
分别代表 整型/浮点型/布尔值/时间戳/文本/图片url/视频url。
其中text/image/video都可认为是string类型,各自代表的含义不同罢了。
integer int
float
boolean bool
time timestamp
text txt
image img photo picture
video
cmd=get/list【必】
topic 表示一个string类型的元素的具体指向类型,多个主题以英文逗号连接。

当type=text时,支持name,soup

当type=image时,支持animal,banner,boy,car,food,girl,landscape,plant

当type=video时,支持tiktok,music
topic=animal
animal
topic=animal,boy
animal,boy
type=string【选填】
默认所有
limit 数值元素的上下区间,当type=integer/float有效。需要以英文圆括号包裹,包含两个端点。 (min,max)
即(0,1024)
或(-100,100)
type=integer/float
【选填】
默认(0,100)
count 当cmd=get/list时,代表返回的元素个数。
当cmd=json且不用模板时,将指定的json数据作为元素,返回count值个元素的集合。
-count=n
n

n为非0整数
【选填】
hit 本次请求能够正常返回的几率,以介于0-1之间的浮点数标识,包含0和1。 ok=n
hit=n
n

n为浮点数
【选填】
默认1
delay 模拟本次接口的调用耗时,单位为秒 delay=n 【选填】
默认0:即时返回
file 当使用json命令时,需要指定一个json文件,MockApi将该文件的内容返回。
了解更多
file=xxx
path=xxx
cmd=json【必填】
format 当type=time时,指定时间的展示样式,需用大括号包裹。参见SimpleDateFormat {yyyy年MM月dd日 HH时mm分ss秒} 【选填】

命令一览

MockApi已支持的命令如下表所示:

cmd type file limit count topic format hit delay
get/list integer - (min,max) count=n - - hit=x delay=s
float - 同上 同上 - - 同上 同上
boolean - - 同上 - - 同上 同上
time - - 同上 - {format} 同上 同上
text - - 同上 topic,topic... - 同上 同上
image - - 同上 同上 - 同上 同上
video - - 同上 同上 - 同上 同上
json - xxx.txt - 同上 - - 同上 同上
- xxx.json - 同上 - - 同上 同上
- xxx.ftl - - - - 同上 同上

命令说明

  1. get命令语义上来说标识只要一个元素(而非集合),但指定的count大于1时,会和list命令有相同的行为;
  2. list命令将会得到一个集合,当指定的count等于1时,会返回一个单元素集合;
  3. json命令意在提供自定义结构的数据,该命令需要指定定义数据结构的文件。
    • 需要保证文件内容的书写正确,否则将导致解析失败
    • 可以通过path指定目录,通过file指定文件;filepath都接受全路径;
    • filepath中的目录分割符需要使用英文.进行分割,而不能使用/或\,如C:.Users.Administrator.Desktop.template.abc.json
    • 当文件格式是.txt.json时,表明【内容】和【结构】是固定的,MockApi不会填充随机内容;
    • 当文件格式是.txt.json时,支持指定count,此时会将文件内容当做一个元素;
    • 若仅需要定义结构,内容由MockApi随机填充,则需要指定.ftl格式的文件。.ftlFreemarker的模板文件,您需要按照它的语法规定进行模板编写。
    • 当文件格式是.ftl时,MockApi内置了一些随机数据供您使用。

内置数据

mockapi
|
————image
|       |
|       ————animal(单张随机动物图片)
|       |
|       ————animals(数量随机的动物图片集合)
|       |
|       ————animals2(数量=2的动物图片集合)
|       ...
|       ————animals100(数量=100的动物图片集合)
|       |
|       ————其他topic
|
————video(与image结构一致)
|     
————text(与image结构一致)
|   
|   
|   
|   
————integer(区间为[0,100])
|       |
|       ————single(单个随机数)
|       |
|       ————multi(数量随机的随机数字集合)
|       |
|       ————multi2(数量=2的随机数字集合)
|       ...
|       ————multi100(数量=100的随机数字集合)
|
————float(与integer结构一致)
|
————boolean(与integer结构一致)
|
————time(与integer结构一致)

其他

思考

  • Java表现层技术有jsp、velocity、freemarker、thymeleaf,为什么使用freemarker?
    • 因为jsp太古老了(不能生成源文件);
    • 因为velocity从Spring Boot 1.5之后接入困难;
    • 因为对thymeleaf的写法不太感冒;
  • new File("/").list()将列出项目所在磁盘的根目录下的直接文件夹,如 D:\下的直接文件夹;
  • new File("."").list()将列出pom.xml所在文件夹下的内容;

常用模板文件

部分同学可能没有接触过Freemarker,这里分享一些本人开发中常用的模板文件:

  • 123
  • 234

它山之石

俗话说:它山之石可以攻玉。同样,MockApi也是借助/借鉴了各方的机慧才得以实现。特此记录以表感谢,同时方便日后查找。

  • Git
    • 公司项目最近由svn迁至git,频繁使用git-bash敲命令给了我命令式接口的灵感;
    • git不仅仅可以对源代码进行版本控制,几乎任何文件都可以被管理(.psd,.md...)。
  • IntelliJ IDEA
  • Maven
    • 一款经典的构建工具。
  • Spring Boot
    • Java EE 主流开发框架。
  • Okio
    • 对Java IO的封装,使得IO操作很方便,MockApi中对文件的处理使用的该库。
  • Freemarker
  • Json
    • 主流的数据交换及传输格式。
  • Fastjson
    • Alibaba开源的Java语言的Json操作库。
  • Java
    • 开发语言,无需多说,使用MockApi可能需要参考SimpleDateFormat
  • Lombok
    • 对Java Bean的Setter/Getter等模板语法进行了大量简化。
  • RxJava
    • Android开发中常用到的异步处理库,MockApi暂时没有使用。
  • Alibaba p3c
    • Alibaba Java代码规范插件,主要对编码风格上进行规范。
  • SonarLint
    • 一款旨在bug出现之前就消灭它的IDE插件。

About

仅调用【单个】【命令式接口】就可获取各种【定制结构】的【模拟数据】,MockApi为前端/移动端开发者提供贴心服务。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published