域可用性通过REST API进行检查

时间:2013-02-19 09:11:25

标签: rest restful-architecture

注意:我不是在寻找域名可用性网络服务!现在我们已经解决了这个问题......

我如何构建一个允许我们通过REST API从域组合中检索资源并在同一API中执行域可用性检查的系统?对两种情况使用相同的URI是一个好主意,还是应该为此使用不同的资源?

例如:

如果我想在example.com(我们的投资组合中是一个域)上获取信息,我会GET /domains/example.com/检索我们的信息(注册信息,如名称服务器,联系人等等),还有内部信息,如我们的客户记录,发票号等......)。

如果我想获得example.org的域名可用性(我们没有在我们的投资组合中注册),我也会打电话给GET /domains/example.org/,然后它会返回,或者域名是否可用。

简而言之:对这两件事使用相同的URI(基本上都是在域上返回信息吗?)或者我应该为此使用不同的资源是一个好主意吗?例如/domainregistration/example.com/

1 个答案:

答案 0 :(得分:1)

REST API的基本思想是提供实现细节的抽象,以及在您的情况下,域信息的逻辑。在这种观点下,抽象可能适合,因为您从投资组合中的域和不在您的投资组合中的域中检索域信息。

但是在检索域信息方面也存在一些差异,例如,检索不在您的投资组合中的域的域信息速度很慢,或者至少比检索投资组合中域的信息慢。另一个区别是,对于REST API,通常会提供一些用于检索多个资源信息的批量功能,如GET /domains/example.com,anotherexample.com,localhost.com/。在检索有关您的投资组合中不存在的域的信息时,您可能/可能不希望访问此类功能。

您可能分割资源的另一个原因是您可以实现一个调用来检索有关您的投资组合中域的所有信息:

GET /domains/

此请求显然只能返回有关您的投资组合中的域的信息,因此在这种情况下您的抽象会中断。

当您为REST API建模以检索域可用性时,我建议使用像

这样的资源
PUT /availabilities/example.com

创建域可用性检查。此资源可以创建子资源example.com,然后可以使用该资源检索有关此可用性检查的信息,或者用于通过以下方式缓存域可用性检查结果:

GET /availabilities/example.com

将所有这些论点放在一起我赞成分割资源,因为:

  • 如果API用户对您的投资组合中域的详细域信息感兴趣,API用户可以检查/domains资源
  • 要获取有关域名在您的投资组合中的信息,用户还将使用/domains/example.com资源
  • 仅对域可用性检查感兴趣的API用户可以使用availabilities资源执行此检查。