0

简单的问题。我阅读了一堆关于 API 设计的文章,但没有找到答案。

API 的端点应该如何相互交互?

例如,如果我有 2 个端点:/category/:name/messages. 例如,从消息中检查类别存在的最佳方法是什么?

1) 来自处理程序的数据库查询,/messages例如:SELECT * FROM categories WHERE name = 'test'?

或者

/messages2) 从处理程序到该端点的HTTP 请求,例如: httpclient.get('/category/test') ?

或者

3)客户端应该获取所有类别,获取特定类别的ID并使用该类别ID发送请求/messages

4

2 回答 2

1

问题很简单,但没有答案。有一件事是肯定的,永远不要使用(2)解决方案。当您可以调用方法时使用 http 客户端请求一些数据会降低 API 的性能和容量。

如果需要检查特定类别的存在以在其中创建响应,/messages则使用 (1) 但不是调用 SQL 查询,而是调用与处理请求相同的方法,而/category/test不是通过 HTTP 在本地调用它。

解决方案 (3) 是 REST 方式,每个端点只负责一种类型的资源。缺点是它可能需要从客户端到 API 的更多 HTTP 请求。

于 2013-10-09T06:24:42.460 回答
1

您应该以所有端点都调用内部 API 来执行任务的方式设计您的应用程序。当您想在另一个内部调用一个操作时,您应该使用相应的内部 API 而不是任何其他方法,例如调用 http 服务。

于 2013-10-09T06:30:41.577 回答