当您使用其他Web应用程序Restful API时,您通常使用包装库还是直接使用Restful API与HTTP客户端?你如何使用Restful API?
0
A
回答
2
这是一个很难回答的问题,主要是因为在目前的行业状况下,正确的答案是非常不切实际的。
在我看来,正确的答案是你不应该使用包装API。统一的接口是HTTP,并且应该是客户端针对的编程模型。
话虽如此,让解析媒体类型来生成强类型版本的助手类没有什么问题。就像这样,
var response = HttpClient.Get(linkTofoo);
if (response.ContentType =='application/foo') {
var strongFoo = FooHelper.Parse(fooResponse);
HandleFoo(strongFoo);
}
不幸的是,绝大多数声称是RESTful的apis都不是。他们不尊重自我描述和超媒体约束,因此他们很难以RESTful的方式与他们交互。它们要求您执行客户端URI构造,并且事先知道将从端点返回的类型。
令人遗憾的事实是,在许多API中,您别无选择,只能使用提供的客户端代理库。这不应该是这样。
如果您正在寻找评估客户端库,请确保它是无状态的。客户端库不应该开始管理返回对象的生命周期。 Http缓存就是这样做的,所以除非它是一个超级智能库,当缓存表示过期时可以使对象引用失效,否则应避免使用任何有状态的客户端库。
e.g.
var foo = remotelibrary.GetFoo(233);
var bar = foo.bar; // If this causes an HTTP request
var barcopy2 = foo.bar // and this doesn't because it already has a reference to bar
// I would be very leary of using this library
1
从长远来看,使用库几乎肯定会更好。这使您可以抽象出设计的宁静,并忽略整个HTTP业务。
如果您使用的任何API都不存在现有的库,那么您应该考虑编写自己的API。
相关问题
- 1. 使用RESTful API
- 2. 如何在RESTful API中使用OpenID?
- 3. 如何使用猎鹰的RESTful API
- 4. 如何使用Java servlet创建RESTful API?
- 5. 我该如何使用Auth0与RESTful API?
- 6. 在Rails中,你如何使用Haml使用RESTful控制器?
- 7. 在Android中使用RESTful API
- 8. 使用RESTful api与骨干
- 9. 使用RESTful API - 安全吗?
- 10. 使用RESTful API异步上传文件使用Angular,ng-file-upload使用RESTful API
- 11. 如何在RESTful API中
- 12. 如何创建Yii2 RESTful API
- 13. 如何记录RESTful API?
- 14. 你如何使用竹REST API
- 15. 如何使用Python编写“Hello World”RESTful API然后使用它
- 16. Restful API:如何安全地访问api?
- 17. 使用RestSharp来使用RESTful API
- 18. 如何在任何python框架中使用python flask RESTful api
- 19. RESTful如何使用PHP?
- 20. 如何使用RESTful Geoserver?
- 21. 如何使用JavaScript显示从RESTful API调用返回的JSON
- 22. 如何使用Firebase RESTful API对用户进行身份验证?
- 23. 使用Django-tastypie用于非RESTful API
- 24. 在Zend Framework中创建一个Restful API时,你可以使用模块吗?
- 25. 如何使用Visual Studio 2017从swagger文档中生成restful api
- 26. 如何使用HTTP方法来路由真正的CRUD RESTful API
- 27. 如何使用CodeIgniter在RESTful API中发送帖子值?
- 28. 如何在restful java api(JAX-RS,Jersey)中使用mysql db?
- 29. 如何在我的Java RESTful API中使用Zapier
- 30. 如何部署使用节点js创建的RESTful api
我会说可以编写/使用为特定超文本应用程序编写的库,例如AtomPub – Mike 2010-11-01 14:04:25
@Mike是的,如果这个库是为HTTP上的特定协议编写的,那么很可能它会在封面下正确使用HTTP,所以你应该是安全的。 – 2010-11-01 14:38:57