为REST API创建前端

时间:2016-10-17 10:58:09

标签: rest api

  1. 当我创建一个使用API​​的前端时,所有链接和初始数据应该放在哪里?
  2. 例如:我有一个前端,在每个页面上我想显示一个登录按钮(或登录时 - 注销按钮和用户名),最近添加的产品列表和特色产品。在点击我的API主页时,我应该回复所有链接和初始数据 - “/”吗?或者(因为有文档)存储我的前端应用程序中的所有链接并向某个地方发出初始请求以检查我是否已登录等等?或者也许是其他解决方案?

    1. 假设我的API包含项目和分配给每个项目的员工列表。我只能在我登录时显示自己的项目(我正在使用JWT令牌)。我应该点击/projects来获取我的项目(每个用户的响应会有所不同,但它取决于请求中传递的令牌),并且在未经过身份验证时回复401,或者我应该点击/user/Xyz/projects并显示403在试图查看别人的项目时?

    2. 与上述项目和员工的API情况相同:在我的前端,我将显示一个项目列表,其中所有员工分配给下面的每个项目。为每个项目单独请求/employees?projectId=X将意味着很多请求。我应该只在_embedded部分中包含员工列表吗? (我遵循HAL规则)

1 个答案:

答案 0 :(得分:2)

如果您希望前端遵守HATEOAS principle(这是REST架构模式的一部分),那么每个页面应该对应一个REST API操作,该操作提供该页面的所有数据。但是,即使前端不遵守所有REST原则,API也可称为REST API。在这种情况下,您可以自由地设计REST API,并考虑其他因素,例如:性能,可重用性,灵活性。我会推荐后者。您可以调用多个API资源来呈现单个页面。将您的API资源设计为逻辑上分离的单元,并有自己的职责。

更具体地回答您的问题:

  1. 假设您需要调用多个资源来初始化应用程序的第一页。不要将这些资源的URL存储在前端应用程序的配置中。你有两个选择:

    1. 提供架构,例如a Swagger schema并让您的应用程序从该架构中检索初始资源的URL。另请参阅guidelines on my website
    2. 让您的基本网址返回一堆指向初始化第一页所需资源的链接(以及可能有助于将来初始化其他应用程序的更多链接)。
  2. 我会推荐/ projects?user =“Xyz”。

  3. 我会将员工作为嵌入对象包含在内。