我目前正在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的任何其他方面,或者我只是完全错了?
答案 0 :(得分:2)
我认为您需要使用XHTML作为媒体类型而不是JSON,并且可以帮助您使用链接。
您可以点击此链接Session: Hypermedia APIs,其中Jon Moore描述了使用XHTML作为媒体类型而不是JSON。