静态api

Why?

开发流程

  1. 需求(用户故事)
  2. 交互
  3. 静态api
  4. 开发和ui并行
  5. 测试、部署等

静态api - 图1

静态api - 图2

这里面可以看到交互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

Create a db.json file

  1. {
  2. "posts": [
  3. { "id": 1, "title": "json-server", "author": "typicode" }
  4. ],
  5. "comments": [
  6. { "id": 1, "body": "some comment", "postId": 1 }
  7. ],
  8. "profile": { "name": "typicode" }
  9. }

Start JSON Server

  1. $ json-server --watch db.json

Now if you go to http://localhost:3000/posts/1, you’ll get

  1. { "id": 1, "title": "json-server", "author": "typicode" }

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

  1. var express = require('express');
  2. var router = express.Router();
  3. // console.dir(router)
  4. /* GET home page. */
  5. router.get('/', function(req, res, next) {
  6. res.api({a:1});
  7. });
  8. router.get('/error', function(req, res, next) {
  9. res.api_error({a:1});
  10. });
  11. module.exports = router;

tpl

示例

获取课程列表

课程api

  • 获取课程列表
  • 获取课程详情
  • 创建订单
  • 我的课程

大家试着补出一下