这个主题的一个“维度”被遗漏了,但它非常重要:有时候,“最佳实践”必须与我们正在实现或利用REST功能增强的平台相结合。
实际示例:
如今,许多Web应用程序都实现了MVC(模型,视图,控制器)体系结构。他们假定提供了某个标准路径,甚至在这些Web应用程序带有“启用SEO URL”选项时也提供了这种路径。
仅提及一个相当著名的Web应用程序:一个OpenCart电子商务商店。当管理员启用“ SEO URL”时,它期望所述URL以非常标准的MVC格式出现,例如:
http://www.domain.tld/special-offers/list-all?limit=25
哪里
special-offers
是MVC控制器,将处理URL(显示“特价”页面)
list-all
是要调用的控制器的动作或功能名称。(*)
limit = 25是一个选项,指出每页将显示25个项目。
(*)list-all
是我为清楚起见使用的虚构函数名称。实际上,OpenCart和大多数MVC框架具有默认的,隐含的(通常在URL中省略)index
功能,当用户希望执行默认操作时会调用该功能。因此,真实世界的网址将是:
http://www.domain.tld/special-offers?limit=25
使用现在与上述类似的相当标准的应用程序或框架结构,您通常会得到针对其进行优化的Web服务器,该服务器将为其重写URL(真正的“非SEOed URL”为:)http://www.domain.tld/index.php?route=special-offers/list-all&limit=25
。
因此,作为开发人员,您必须面对现有的基础结构并适应您的“最佳实践”,除非您是系统管理员,否则请确切地知道如何调整Apache / NGinx重写配置(后者可能很讨厌!)等等上。
因此,您的REST API在遵循引用的Web应用程序标准方面通常会更好,无论是与它的一致性还是简化/速度(从而节省预算)。
回到上面的实际示例,一致的REST API可能具有以下URL:
http://www.domain.tld/api/special-offers-list?from=15&limit=25
或(非SEO网址)
http://www.domain.tld/index.php?route=api/special-offers-list?from=15&limit=25
混合使用“形成路径”参数和“查询形成”参数。