RESTful与面向对象

2024-03-22    分类: 网站建设

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 的对象体系本身有点奇葩。不过无论多奇葩,至少上面这些例子读起来是不太费力的。

网页题目:RESTful与面向对象
标题URL:/news28/321178.html

成都网站建设公司_创新互联,为您提供网站改版网站维护云服务器搜索引擎优化外贸建站网站收录

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站建设