说实话:前后端分离后,比从前更痛苦了
Posted Java后端
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了说实话:前后端分离后,比从前更痛苦了相关的知识,希望对你有一定的参考价值。
链接 | https://www.jianshu.com/p/941825521354
你有没有遇到过:
-
前端代码刚写完,后端的接口又变了。 -
接口文档永远都是不对的。 -
测试工作永远只能临近上线才能开始。
为什么前后端分离了,你比从前更痛苦?
为什么接口会频繁变动?
为什么接口文档永远都是不对的?
为什么测试工作永远只能临近上线才能开始?
怎么破?
raml-mocker
example
指令即可,raml-mocker 会解析 Raml 文件,并启动一个 Mock Server,将
example
的内容返回给浏览器。
开始
初始化项目
git clone https://github.com/xbl/raml-mocker-starter.git raml-api
cd raml-api
git remote rm origin
安装
启动 mock server
yarn start
# or
npm start
测试
curl -i http://localhost:3000/api/v1/users/1/books/
# or
curl -i http://localhost:3000/api/v1/users/1/books/1
生成 API 可视化文档
yarn run build
# or
npm run build
此功能使用了raml2html。
配置 .raml-config.json
{
"controller": "./controller",
"raml": "./raml",
"main": "api.raml",
"port": 3000,
"plugins": []
}
-
controller: controller 目录路径,在高级篇中会有更详细说明 -
raml: raml 文件目录 -
main: raml 目录下的入口文件 -
port: mock server 服务端口号 -
plugins: 插件
入门篇:Mock Server
example
:
/books:
/:id:
post:
body:
application/json:
type: abc
responses:
200:
body:
application/json:
type: song
example: !include ./books_200.json
{
"code": 200,
"data": [
{
"id": 1,
"title": "books title",
"description": "books desccription1"
},
{
"id": 2,
"title": "books title",
"description": "books desccription2"
}
]
}
curl -i http://localhost:3000/api/v1/users/1/books
example
的数据,唯一不足是无法根据参数动态返回不同数据。别急,请往下看。
高级篇:动态 Server
(controller)
指令,即可添加动态的 Server,如:
/books:
type:
resourceList:
get:
description: 获取用户的书籍
(controller): user
responses:
200:
body:
type: song[]
example: !include ./books_200.json
(controller)
表示 controller 目录下 user.js 中 getBook 函数。
exports.getBook = (req, res, webApi) => {
console.log(webApi);
res.send('Hello World!');
}
{
"absoluteUri": "/api/:version/users/:user_id/books",
"method": "get",
"controller": "user#getBook",
"responses": [
{
"code": "200",
"body": "... example ...",
"mimeType": "application/json"
}
]
}
插件
controller
指令的时候对 response 的内容进行处理,例如使用 Mockjs。
{
"controller": "./controller",
"raml": "./raml",
"main": "api.raml",
"port": 3000,
"plugins": ["./plugins/mock.js"]
}
var { mock } = require('mockjs');
module.exports = (body) => {
try {
return mock(JSON.parse(body));
} catch(e) {}
return body;
}
总结
【END】
5.
以上是关于说实话:前后端分离后,比从前更痛苦了的主要内容,如果未能解决你的问题,请参考以下文章