Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

JSON Patch

  使用HTTP的PATCH方法可以通过一个结构化的数据来编辑服务器上的资源。如果要编辑数据是JSON的话,在规范中又有另一套标准来定义这个PATCH方法对JSON的编辑语法[RFC6902]。虽然服务器程序一般没有原生支持,不过照着这个规范实现一个也不难。
  其实我不喜欢这套规范,也懒得自己去实现,所以直接网络上找了个现成的库 JsonPatch.inc,这里使用Apache+PHP实现。首先,要配置.htaccess,把json文件交给程序处理。
RewriteCond %{REQUEST_METHOD} ^PATCH$
RewriteRule ^(.*\.json)$ /json-patch.php?path=$1
  然后是 json-patch.php 的内容
require 'JsonPatch.inc';

$path=$_GET['path'];
file_exists($path) or header('HTTP/1.1 404 Not Found') or die;
$doc=json_decode(file_get_contents($path),true);
if(is_null($doc))header('HTTP/1.1 403 Forbidden') or die;
$patches=json_decode(file_get_contents('php://input'),true);
if(is_null($patches))
  header('HTTP/1.1 415 Unsupported Media Type') or die;
$result=JsonPatch::patch($doc,$patches);
file_put_contents($path,json_encode($result));
  再创建一个初始的JSON文件 test.json
[]   然后开始测试,在控制台中执行一个PATCH请求,给这个JSON数组添加一个元素

  刷新后可以看到JSON文件的相应位置已经被写入数据了

  当然,这只是个最简单的演示,安全性问题还有一大堆需要处理。而且我不喜欢这套规范,所以不想深究。不过PATCH确实是好东西,也许和NoSQL一起用会更合适。
网名:
3.84.186.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^