Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中RESTAPI客户端库的好例子有哪些_Javascript_Api_Rest - Fatal编程技术网

JavaScript中RESTAPI客户端库的好例子有哪些

JavaScript中RESTAPI客户端库的好例子有哪些,javascript,api,rest,Javascript,Api,Rest,我正在寻找在轻量级JavaScript客户端中包装RESTAPI的最佳实践样式 在过去,我见过以如下方式实现的库: var request = new SearchRequest(apikey); request.query = "search term"; request.send(function(results) { console.log(results); }); 或者更明确地接受HTTP,如: api.get("search", "search term", functio

我正在寻找在轻量级JavaScript客户端中包装RESTAPI的最佳实践样式

在过去,我见过以如下方式实现的库:

var request = new SearchRequest(apikey);
request.query = "search term";
request.send(function(results) {
    console.log(results);
});
或者更明确地接受HTTP,如:

api.get("search", "search term", function(results) {
    console.log(results);
});
api.post("comment", comment, function(results) {
    console.log(results);
});
或者更高层次的包装:

api.search("search term", function(results) {
    console.log(results);
});
api.createComment(comment, function(results) {
    console.log(results);
});
您最近看到了哪些包装RESTAPI的现代JavaScript客户端库的好例子。不担心实现细节,只关心API设计


谢谢

我看了一段关于优秀API设计的非常好的视频。绝对值得一看

除上述视频外,您还可以通过访问以下网站获得一本免费书籍Web API设计-制作开发人员喜爱的界面

关于包装,可能需要考虑以下几点:

  • 使包装一致。
  • 采用您正在使用的编程语言或社区的标准、命名约定等,使包装器对使用它的人来说尽可能自然

  • 包装还是抽象?这就是问题所在。
  • 通过包装您可以尽可能地模仿restapi方法和结构,但只是简单地简化了一些困难的事情。这种方法的最大优点之一是,当目标REST API升级时,它使升级更容易

    当目标REST API比较复杂或行为和外观不标准时,抽象非常有用。在这种情况下,您的包装器方法和调用可能与您的目标REST API方法完全不同,但最终将简化(希望如此)使用包装器的人的生活。

    检查这些方法:

    • (需要角度)
    • (类似于三角形,但没有棱角)

    关于StackOverflow还有其他类似的讨论,比如

    我个人很喜欢你的第三个(更高级别的抽象)示例。它更像是一个SDK,而不是一个轻量级的包装器。重新启动了20kb的小型化版本,但Restful的小型化版本是78kb。对于REST来说太多了,因为我认为.restful.js依赖于immutable.js,它占据了超过50kb的精简restful源代码。如果您已经在应用程序中使用了immutable.js(这在ReactJs/Redux项目中非常常见),并使用webpack进行构建,那么immutable.js将只添加一次。因此,restful的大小与restanglar非常相似。而且,如果您使用Angular,您肯定应该使用restanglar。js更适合于不使用Angular的应用程序。在这种情况下,部分Anguler源代码(例如$http)需要以某种方式移植到restful core。Backbone.js应该在该列表中。它有一个很好的面向对象的rest模型。