8.5 静态api

最后更新于:2022-04-01 23:35:06

# 静态api ## Why? 开发流程 1. 需求(用户故事) 2. 交互 3. 静态api 4. 开发和ui并行 5. 测试、部署等 ![](https://i5ting.github.io/wechat-dev-with-nodejs/vip-lession/img/api-before.png) ![](https://i5ting.github.io/wechat-dev-with-nodejs/vip-lession/img/api-after.png) 这里面可以看到交互ue出了,就可以出静态api 静态api好处 * 分析在前,定义好接口规范和字段等 * 有了静态api,开发也可以并行 * 后端java/node/php * h5/pc * 移动端 如果再智能点,静态api是可以对线上api进行测试和压测的。 ## 实现方法 ### json-server Get a full fake REST API with zero coding in less than 30 seconds (seriously) [https://github.com/typicode/json-server](https://github.com/typicode/json-server) Create a db.json file ~~~ { "posts": [ { "id": 1, "title": "json-server", "author": "typicode" } ], "comments": [ { "id": 1, "body": "some comment", "postId": 1 } ], "profile": { "name": "typicode" } } ~~~ Start JSON Server ~~~ $ json-server --watch db.json ~~~ Now if you go to [http://localhost:3000/posts/1](http://localhost:3000/posts/1), you'll get ~~~ { "id": 1, "title": "json-server", "author": "typicode" } ~~~ ### apie [https://github.com/base-n/apie](https://github.com/base-n/apie) Features * 代码极简,可配置api目录 * 支持路径和url映射,在routes目录下创建api目录,即可使用/api作为路径 * 支持v1或v2版本 * 使用express-style的路由,写法简单 * 使用res.api约定api返回格式 * 使用req.db(实际是lowdb)模拟数据 Teck Stacks * use base2 as micro kernel * use expess-style routes * use res.api as api convention * use nodemon for livereload [https://github.com/base-n/apie/blob/master/routes/api/index.js](https://github.com/base-n/apie/blob/master/routes/api/index.js) ~~~ var express = require('express'); var router = express.Router(); // console.dir(router) /* GET home page. */ router.get('/', function(req, res, next) { res.api({a:1}); }); router.get('/error', function(req, res, next) { res.api_error({a:1}); }); module.exports = router; ~~~ ## tpl * url : [http://127.0.0.1:3019/api/](http://127.0.0.1:3019/api/) * method : GET * type : JSON * params : 无 * 返回 * 返回状态码 * 返回字段说明 示例 获取课程列表 * url : [http://127.0.0.1:3019/api/v1/lessions](http://127.0.0.1:3019/api/v1/lessions) * method : GET * type : JSON * params : 无 * 返回 * 返回状态码 * 0 成功 * 返回字段说明 * lessions 对象数组 ## 课程api * 获取课程列表 * 获取课程详情 * 创建订单 * 我的课程 大家试着补出一下
';