简单的问题。我阅读了一堆关于API设计的文章,但没有找到答案。
API的端点应该如何相互影响?
例如,如果我有2个端点:/category/:name
和/messages
。例如,从消息中检查类别是否存在的最佳方法是什么?
1)来自/messages
处理程序的数据库查询,如:SELECT * FROM categories WHERE name ='test'?
或
2)从/messages
处理程序到该端点的HTTP请求,如:httpclient.get('/ category / test')?
或
3)客户应获取所有类别,获取特定类别的ID并向/messages
发送具有该类别ID的请求?
答案 0 :(得分:1)
问题很简单但不是答案。有一点是肯定的,永远不要使用(2)解决方案。在调用方法时使用http客户端请求某些数据会降低API的性能和容量。
如果在/messages
中创建响应需要检查是否存在特定类别,则使用(1)但不是调用SQL查询,而是调用与处理/category/test
请求相同的方法来调用它本地而不是通过HTTP。
当每个端点仅负责一种类型的资源时,解决方案(3)是REST方式。缺点是它可能需要从客户端到API的更多HTTP请求。
答案 1 :(得分:1)
您应该以所有端点都在调用内部API来执行任务的方式设计应用程序。当你想在其他内部调用一个操作时,你应该使用相应的内部API而不是任何其他方法,如调用http服务。