首页客户案例企业网站建设外贸独立站SEO优化小程序+APP开发自媒体运营关于动态联系咨询

RESTful 与面向对象

RESTful 的概念一直很混乱,有人说我没有理解 RESTful?好吧,无论我理不理解,我只想把我理解的东西分享出来而已。我觉得 RESTful 就是 HTTP 上的面向对象风格。它的归类化、层次化等做法使设计出来的 API 像一个面向对象的封装一样更易用。 更细地说吧,RESTful 的风格是把 URL 变成了对象的引用链,把 HTTP 方法作为对象的方法,把 Request Body 和 Query String 作为方法的参数、把响应的状态信息和实体作为方法的返回值。甚至我们还能看到继承的身影,但由于 URL 的约束力有限,所以没法在语法上做强约定。 比如对某个 JavaScript 对象的操作我们可以映射到这么一套 RESTful 风格的 API 上 var data = {}; var primaryKey = 0;

// POST /data \n\n a=2&b=2 // 201 Created \n\n id=1 data[++primaryKey] = { a: 1, b: 2 }; var id = primaryKey;

// PUT /data/1/a \n\n 233 // 204 No Content data[id].a = 233;

// PUT /data/1/b \n\n 332 // 204 No Content data[id].b = 332;

// GET /data/1 // 200 OK \n\n a=233&b=332 data[id];

// DELETE /data/1 // 204 No Content delete data[id]; 上面的例子只是展示最基本的增删改查,有些方面可能并不恰当。比如 POST 操作创建的可能是一个对象,而这个对象里可能有引用了另一个列表: var users = []; var primaryKey = 0;

var User = function(userid, options) { this.userid = userid; this.usernam = options.username; this.password = options.passwrod; this.score = 100; }; User.prototype.increment = { post: function(options) { this.score += options.score; } };

// POST /users \n\n username=test&password=xxx // 201 Created \n\n userid=1 var userid = ++primaryKey; var user = new User(userid, { username: "test", password: "xxx" }); users[userid] = user;

// POST /users/1/increment \n\n score=133 // 204 No Content users[userid].increment.post({ score: 133 }); 这么一比较就会发现,RESTful 风格的本质其实就是把结构体的操作映射到了 HTTP 操作中。我们在开发程序时会使用面向对象的风格就是因为它简单易读,使用 RESTful 风格的 API 也完全是一样的目的。不过上面的例子中还是有一些很奇葩的东西在里面,那是因为 JavaScript 的对象体系本身有点奇葩。不过无论多奇葩,至少上面这些例子读起来是不太费力的。

日期:2015年04月21日

标签: 广州网站设计公司 、 广州网站设计 、 广州网站建设公司 、 广州网站建设 、 广州网站制作公司 、 广州网站制作 、 高端网站设计 、 高端网站建设 、 广州高端网站设计 、 广州高端网站建设

获取您的项目定制及优化报价。

* 为广州天河、白云、海珠、番禺、花都、南沙区提供网站建设服务。
微信二维码15876521776免费获取诊断报告