Web 技术研究所

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

Angular 的 $resource 一点都不 RESTful!

  Angular 的 $resource 号称是为 RESTful API 所设计的,我怎么用着觉得它更像是在「勉强支持 RESTful 风格」呢?$resource 的做法是提供了一套把 RESTful 风格的 URL 路径参数转换为普通参数的方法来支持 RESTful,这不就是在拿 RESTful 当 SOAP 用嘛?
  我们就拿 Gtihub 的 API 举例,比如下面这个获取 PR 列表的 API GET /repos/:owner/:repo/pulls   在 $resource 中我们得这么定义 var pulls = $resource('/repos/:owner/:repo/pulls');   然后这么使用 pulls.get({
  owner: '用户名',
  repo: '仓库名'
}, function(e) {
  // TODO
});
  于是业务开发人员在有「获取 PR 列表」需求时先要看旧程序中是否已经有相关定义,然后找到了 pulls 这个对象。拿到 pulls 这个对象后还未必会用,又得去翻 API 文档,查看使用的 HTTP 方法以及 Query String、Request Body 支持的参数和返回的数据结构。总之绕了一大圈才能用上这个方法。有时候业务开发人员疏忽没有看到已有的 pulls 定义,于是又定义了一个名为 repoPulls 的同样的东西,产生了各种不一致的东西。
  其实 $resource 在这里做的事就是把 API 转换成了这样的格式,或者说 $resource 更希望与这种风格的 API 协作 GET /pulls?owner=:owner&repo=:repo // 定义
var pulls = $resource('/pulls');

// 使用
pulls.get({
  owner: '用户名',
  repo: '仓库名'
}, function(e) {
  // TODO
});
  当然,上面这个用法也挺好的。开发者只要看 API 文档,知道要传哪些参数过去就可以使用。我只是觉得拿 $resource 做 RESTful 就像把一艘船的底下开个洞装上车轴和轮子让它在地上跑一样。
网名:
3.84.186.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^