RESTful API 设计:内部交互
Posted
技术标签:
【中文标题】RESTful API 设计:内部交互【英文标题】:RESTful API design: inner interaction 【发布时间】:2013-10-15 17:20:15 【问题描述】:简单的问题。我阅读了一堆关于 API 设计的文章,但没有找到答案。
API 的端点应该如何相互交互?
例如,如果我有 2 个端点:/category/:name
和 /messages
。例如,从消息中检查类别存在的最佳方法是什么?
1) 来自/messages
处理程序的数据库查询,例如:SELECT * FROM categories WHERE name = 'test'?
或
2) 从/messages
处理程序到该端点的 HTTP 请求,例如:httpclient.get('/category/test') ?
或
3) 客户端应该获取所有类别,获取特定类别的 ID 并使用该类别 ID 向/messages
发送请求?
【问题讨论】:
【参考方案1】:您应该以所有端点都调用内部 API 来执行任务的方式设计您的应用程序。当您想在另一个内部调用一个操作时,您应该使用相应的内部 API,而不是任何其他方法,例如调用 http 服务。
【讨论】:
【参考方案2】:问题很简单,但没有答案。有一件事是肯定的,永远不要使用(2)解决方案。当您可以调用方法时使用 http 客户端请求一些数据会降低 API 的性能和容量。
如果需要检查特定类别的存在以在 /messages
中创建响应,则使用 (1) 但不是调用 SQL 查询,而是调用与处理对 /category/test
的请求相同的方法,只需在本地调用它,而不是通过 HTTP .
当每个端点只负责一种类型的资源时,解决方案 (3) 是 REST 方式。缺点是它可能需要从客户端到 API 的更多 HTTP 请求。
【讨论】:
以上是关于RESTful API 设计:内部交互的主要内容,如果未能解决你的问题,请参考以下文章