2013-10-08 36 views
0

简单的问题。我读了一堆关于API设计的文章,但没有找到答案。REST风格的API设计:内部交互

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

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

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

2)HTTP从/messages处理程序,以该端点请求等:httpclient.get( '/类别/试验')?

3)客户应该得到的所有类别,获得特定类别的ID,并发送请求/messages与该类别ID?

回答

1

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

如果需要的特定类别的检查存在创造/messages响应然后使用(1),但是代替调用SQL查询调用相同的方法,用于处理请求到/category/test只是调用它在本地不通过HTTP。

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

1

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