$http 请求和 angular 基于主键或 url 参数的路由?

$http requests and angular routing based on primary key or url param?

我有一个关系数据库,我通过 Web 服务从中检索数据。我定义的@GET 方法是基于主键的。 例如,对于具有主键 1team,我使用 @GET 请求 http://localhost:8080://teams/1 来获取与团队:

{
 “id” : “1”,
 “name” : “Barcelona"
}

在实现我的网络应用程序时,我遇到了一个概念性问题。因为我认为让最终用户看到主键 ID 不是一个好习惯,所以我保留了基于主键的请求,但是,我添加了一个名为 uri 的属性我的数据库 table(巴塞罗那的 uri 是 bar,依此类推)。我使用 uri 属性作为 url 中的参数。因此,如果用户单击巴塞罗那队图片,他将获得 url: http://localhost:9000/teams/bar 而不是 http://localhost:9000/teams/1而在状态的内部实现中,我正在使用我已经在我的 Web 服务中定义的请求 http://localhost:8080://teams/1,因为此时我使用请求来获取巴塞罗那的图像,我也得到了我的 ID可以作为参数传递给新请求:http://localhost:9000/teams/1

一切正常,但问题是如果用户直接在浏览器中输入 url: http://localhost:9000/teams/bar 而不是点击巴塞罗那图片,请求将无法执行工作,因为 id 不存在。

我想知道的是,这种情况下的最佳做法是什么?

  1. 保持行为不变?
  2. 从数据库发出请求 基于 uri 属性而不是主键?如果是,我为什么 使用主键?为什么不考虑将 uri 属性作为主要属性 钥匙?
  3. 你有什么建议?

作为解决方案,我将保留主键属性,并将 $http 请求变基到 uri 属性。

要检索巴塞罗那队,我使用 url http://localhost:9000/teams/bar which will call the web service $http GET method for http://localhost:8080/teams/bar。主键(id 属性)对于连接其他关系仍然有用。

在其他情况下,如果 uri 没有价值,我会根据主键发出请求。例如,一条 table 新闻具有 id 和 description 属性,其中不需要 uri。我只是在请求中使用 id 作为参数,如下所示:http://localhost:8080/news/123 and http://localhost:9000/news/123 in the web app.