2015-12-11 49 views
5

我正在编写我的第一个Web应用程序。只是想知道REST API设计时的约定。让它反映我的服务器端架构还是更容易推理的更好?REST API应该反映服务器端应用程序体系结构

我想无论是做的:

/serviceProvider/product 

/product/serviceProvider 

我的服务器端架构都分成由服务提供商组织的模块,但是它们都暴露产品查询API。

回答

5

理想情况下,应该将API设计为对其消费者最有意义。有不是真的很好的理由来反映你的“服务器体系结构”。事实上,这是什么通常被称为一个漏水的抽象或漏水的API,被认为是不好的做法,主要是因为你的应用程序结构可能会发生变化,然后你有这些可能出现的情况:

  • 你需要改变你的API,这是一个已经被某人使用的非平凡任务;
  • 您的API停止反映您的应用程序结构,导致不一致;
  • 将您的应用程序结构或数据库架构公开给世界可能会产生安全隐患。

考虑到这些事情,您最好先设计API,重点放在易用性上。您的API的使用者不需要知道或关心您的应用程序体系结构。

+1

再加上一个,它就像在默认实现后命名接口。糟糕的做法。 – inf3rno

0

我相信保持相同的体系结构非常重要,因为您不得不提供简单的API,它会强制您在服务器端实现简化的体系结构。这就是说,你不想公开任何服务器端方法或者甚至是返回对象的每个服务器端属性。

在Kaltura中,我们也相信平面(非嵌套)路径来简化API。 有关更多指导原则,请参阅我的博客:http://restafar.com/create-new-rest-server/

相关问题