惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 司徒正美
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
罗磊的独立博客
The GitHub Blog
The GitHub Blog
L
LangChain Blog
A
About on SuperTechFans
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
DataBreaches.Net
宝玉的分享
宝玉的分享
U
Unit 42
阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
N
Netflix TechBlog - Medium
The Cloudflare Blog
Microsoft Azure Blog
Microsoft Azure Blog
H
Help Net Security
美团技术团队
大猫的无限游戏
大猫的无限游戏
雷峰网
雷峰网
爱范儿
爱范儿
酷 壳 – CoolShell
酷 壳 – CoolShell
MongoDB | Blog
MongoDB | Blog

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟
使用json-server来帮助前后端分离
2015-10-23 · via 夜行人

我是个挺工具控的人,平时喜欢收集各种能提高生活质量/工作效率的小工具。

同时也挺热衷于分享,对于自己爱不释手的工具,总会忍不住想安利给周围的人。

如果大家用着开心,因为这些工具的帮助,能省下更多的时间去看书/约会/看电影,那么编写这些工具本身,成了一件多么性感而浪漫的事呀

今天推荐的一款工具叫:json-server,在它的帮助下,你能在半分钟之内搭建一个REST API服务器,支持CURD操作

##前后端分离 前后端分离是个很棒的想法。一般而言,开发一个Web应用的时候,我们都会简单地分为前端工程师和后端工程师。职责划分时,通常的做法是前端工程师负责浏览器端用户交互界面和逻辑等,后端负责数据的处理和存储等。可以概括为:后端提供数据,前端负责显示数据。

在前后端通信中,当前流行的的做法是采用json作为中介,接口采用RESTful的风格

我们时常面对这样一个问题,前端的工作似乎依赖于后端提供的接口,那么在后端构建好应用之前,前端除了逛github外,就无事可做了,卧槽这不敏捷呀。

一般公司的做法可能是,先约定好接口,大家按照规范来编程,的确,这样做之后,开发工作就能并行开展了。可是伪造数据是个很烦人的工作呀,尤其是数据的增删改,前端都得手动来写,json这种东西一不小心又容易写错,而且前端开发如果是个团队的话,大家其实都期待有个一致的数据源,基于同样的数据,这样交流起来容易许多。

在这种情况下你如果遇到json-server,该是怎样一种相见恨晚的感觉。

json-server让你迅速搭建器一个REST API服务器,你要做的仅仅需要创建一个json文件即可,完全不必有任何服务器和后端的知识。

如此一来,前后端分离中容易耦合的部分(接口数据),在开发阶段就被解耦了

另外,关于前后端分离,阿里内部对此的实践很多,有兴趣的同学可以围观前后端分离的思考与实践.去年去阿里参加了一个会议,他们分享了不少这一块的经验和前车之鉴,挺引人深思的。

##json-server的安装与使用 ###本地安装 首先你本地要装有nodejs。之后直接安装json-server:sudo npm install -g json-server ###使用docker 参考这里.
几乎也是一键式的:docker run -d -p 80:80 -v /home/user/articles.json:/data/db.json clue/json-server

###使用 创建一个json文件,类似这样

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

万事具备,可以开始啦:json-server --watch db.json

在浏览器中打开http://127.0.0.1:3000/即可

对于当前这个例子,请求所有数据为http://127.0.0.1:3000/db

###CURD操作 采用RESTful风格,可以使用Postman或httpie来测试

以httpie来演示

1
2
3
4
http delete 127.0.0.1:3000/posts name=wwj
#response: HTTP/1.1 201 Created
http post 127.0.0.1:3000/posts/2 
#response: HTTP/1.1 200 OK 

值得说明的一点是,json-server支持跨域请求(实际上跨域是一个安全策略问题,浏览器端总是能发送跨域请求的,重点在服务器端是不是愿意接受,json-server处于开发的便利愿意接受跨域请求,所以用户直接在静态文件里就能开发ajax程序!),如果我们在ubuntu上部署的话,记得ln -s /usr/bin/nodejs /usr/bin/node,否则会说找不到node

##在edX开发中的应用 开发xblock组件时,前后端通信也是采用json,json-server很适合用来模拟后端的数据

##后记 这半年来,对优化workflow兴趣浓厚,大概可以表述为对如下命题的兴趣:如何使用开源工具来优化公司内部的日常工作流,包括但不限于自动化测试,提供基础服务,自动化办公 。 先后在公司内部搭建了私有论坛,代码托管,私有文件存储,内网映射服务

之后有可能,很适合将json-server构建为公司内部使用的在线服务,开发者们只需要在线编写初始化的json文件,服务便可跑起来,为前端开发者提供 REST API

技术上实现很简单,使用flask搭建一个在线服务,提供一个在线编辑器CodeMirror,将格式正确的json保存为文件,之后在flask中调用子线程把服务跑起来就行

如果不考虑安全的话,就更简单,启用一个json-server即可,用户各自在自己的区域做操作即可(诸如我只在/wwj下做操作),互不干扰。初始化的数据,可以用httpie脚本化生成