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

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
C
Cisco Blogs
The Hacker News
The Hacker News
T
Tor Project blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The GitHub Blog
The GitHub Blog
A
Arctic Wolf
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The Register - Security
The Register - Security
云风的 BLOG
云风的 BLOG
Simon Willison's Weblog
Simon Willison's Weblog
P
Palo Alto Networks Blog
Vercel News
Vercel News
C
CERT Recently Published Vulnerability Notes
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
M
MIT News - Artificial intelligence
I
Intezer
aimingoo的专栏
aimingoo的专栏
U
Unit 42
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LINUX DO - 热门话题
Microsoft Security Blog
Microsoft Security Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyberwarzone
Cyberwarzone
P
Proofpoint News Feed
P
Proofpoint News Feed
B
Blog
T
Threat Research - Cisco Blogs
博客园 - 叶小钗
Recorded Future
Recorded Future
Last Week in AI
Last Week in AI
N
News and Events Feed by Topic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Know Your Adversary
Know Your Adversary
Engineering at Meta
Engineering at Meta
G
Google Developers Blog
PCI Perspectives
PCI Perspectives
Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
Application and Cybersecurity Blog
Application and Cybersecurity Blog
MyScale Blog
MyScale Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
Schneier on Security
Schneier on Security
N
News | PayPal Newsroom
C
Cybersecurity and Infrastructure Security Agency CISA
H
Help Net Security
博客园 - 聂微东
H
Hackread – Cybersecurity News, Data Breaches, AI and More
G
GRAHAM CLULEY

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观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 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
使用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脚本化生成