HATEOAS 对于使用 RESTful Web API 的基于浏览器的客户端

HATEOAS For a Browser-Based Client Consuming a RESTful Web API

我目前正在 ASP.NET 中设计一个 RESTful API,并且还将设计一个基于浏览器的客户端来使用这个 RESTful API(也使用 ASP.NET)。现在,我希望客户端和 API 由同一个解决方案提供服务。

我难以理解的一个概念是如何在客户端和 API 之间进行逻辑分离,而不影响客户端页面映射与数据的同步(来自 API) 显示在这些页面中。从基于浏览器的应用程序的基本性质来看,它以 RESTful 方式提供;其他客户端页面的发现是通过单个入口点和 HATEOAS。此外,对于 RESTful API,资源(应用程序数据)是在运行时通过单个入口点和 HATEOAS 发现的。

对我来说,这个概念翻译如下:

对于客户:

欢迎页面(我的客户端入口点):www.example.com/home

在此页面的 HTML 中,我有以下链接:

www.example.com/profilePage
www.example.com/contactsPage

等...

对于API:

入口点:

www.api.example.com

我的 JSON 结果(或其他媒体类型响应)包含指向以下内容的链接:

www.api.example.com/resourceToBeDisplayedOnProfilePage
www.api.example.com/resourceToBeDisplayedOnContactsPage

到目前为止,我的理解是否正确?当每个页面的 HTML 中的链接纯粹用于页面时,我如何让客户知道如何获取相应屏幕的数据?

(我进行这种分离的动机是为了可伸缩性和性能目的。如果能够缓存客户端应用程序页面的布局、样式和脚本,而不需要那些正在显示的数据的上下文,那就太好了页面。我预计页面布局的停滞将远远大于可以在这些页面中显示的数据,因此允许我将页面缓存更长的时间。)

此外,根据我对我的理解的解释,您能否看到我在设计中可能没有考虑到的 REST 的任何其他方面,或者我完全错了?

我认为您需要使用 XHTML 作为媒体类型而不是 JSON,这将有助于您使用 link。

您可以遵循此 link Session: Hypermedia APIs,其中 Jon Moore 描述了使用 XHTML 作为媒体类型而不是 JSON。