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

Angularjs $http请求和基于主键或url参数的角度路由?,angularjs,web-services,web,jax-rs,restful-url,Angularjs,Web Services,Web,Jax Rs,Restful Url,我有一个关系数据库,通过web服务从中检索数据。我定义的@GET方法是基于主键的。 例如,对于具有主键1的团队,我使用@GET请求获取与该团队相关的数据: { “id” : “1”, “name” : “Barcelona" } 当我在实现我的web应用程序时,我遇到了一个概念上的问题。因为我认为让最终用户看到主键id不是一个好的做法,所以我根据主键保留请求,但是,我在我的数据库表中添加了一个名为uri的属性(因为巴塞罗那uri是bar,依此类推)。我正在使用uri属性作为url中的参数。

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

{
 “id” : “1”,
 “name” : “Barcelona"
}
当我在实现我的web应用程序时,我遇到了一个概念上的问题。因为我认为让最终用户看到主键id不是一个好的做法,所以我根据主键保留请求,但是,我在我的数据库表中添加了一个名为uri的属性(因为巴塞罗那uri是bar,依此类推)。我正在使用uri属性作为url中的参数。因此,如果用户单击巴塞罗那团队图像,他将获得url:而不是在状态的内部实现中,我使用的是我在web服务中已经定义的请求,因为在我使用请求获取巴塞罗那的图像时,我还获得了id,我可以将其作为参数传递给新请求:

一切正常,但问题是如果用户直接在浏览器中输入url,而不是单击巴塞罗那图像,请求将无法工作,因为id不存在

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

  • 保持现状
  • 从数据库发出请求 基于uri属性而不是主键?如果是,我为什么要这样做 使用主键?为什么不把uri属性作为一个主属性呢 钥匙
  • 你有什么建议

  • 作为一种解决方案,我将保留主键属性,并在uri属性上重新设置$http请求的基础

    为了检索巴塞罗那团队,我使用url,该url将为其调用web服务$HTTPGET方法。主键(id属性)对于与其他关系的联接仍然很有用


    在其他情况下,如果uri没有价值,我将基于主键请求。例如,表news具有id和description属性,其中不需要uri。只需在请求中使用id作为参数,如下所示:在web应用程序中。

    最简单的解决方案是在数据库中为
    uri
    字段创建索引,然后将web服务端点更改为查询
    uri
    ,通常,我不认为在URL中显示主键有什么害处,除非它本身具有某种意义(即银行账号)。如果您担心未经授权的访问,您应该使用一些服务器端身份验证来验证是否允许用户查看与主键关联的结果。好的,伙计们,假设您说服我将请求基于uri属性。那么,为什么我仍然需要id属性作为主键呢?我省略了id并使用uri属性作为主键(索引)?@EddyG将
    uri
    -字段作为一个单独的字段,允许您轻松地更改它,因为您仍然将
    id
    用作关系中的外键。