我有一个关系数据库,通过Web服务从中检索数据。我定义的@GET方法基于主键。 例如,对于主键 1 的团队,我使用@GET请求http://localhost:8080://teams/1来获取与团队相关的数据:
{
“id” : “1”,
“name” : “Barcelona"
}
在我实施我的网络应用程序时,我遇到了一个概念问题。由于我不认为让最终用户看到主键ID是一个好习惯,我根据主键保留了请求,但是,我在数据库表中添加了一个名为 uri 的属性(对于巴塞罗那uri是 bar ,依此类推)。我使用 uri 属性作为网址中的参数。因此,如果用户点击了巴塞罗那团队图片,他会在状态的内部实施中获取网址:http://localhost:9000/teams/bar而非http://localhost:9000/teams/1,我正在使用我已经使用的请求http://localhost:8080://teams/1在我的网络服务中定义,因为目前我使用了获取巴塞罗那图像的请求,我还得到了我可以作为参数传递给新请求的ID:http://localhost:9000/teams/1
一切正常,但问题是,如果用户直接在浏览器中输入网址:http://localhost:9000/teams/bar而不是点击巴塞罗那图片,则该请求将无法正常工作,因为该ID不存在。
我想知道的是,在这种情况下最佳做法是什么?
答案 0 :(得分:0)
作为解决方案,我将保留主键属性,并且我将在uri属性上重新定义$ http请求。
要检索巴塞罗那团队,我使用网址http://localhost:9000/teams/bar,它会为http://localhost:8080/teams/bar调用网络服务$ http GET方法。主键(id属性)对于与其他关系的连接仍然有用。
在其他情况下,如果uri没有价值,我会根据主键建立请求。例如,表新闻具有id和description属性,其中不需要uri。我只需在请求中使用id作为参数,如下所示:网络应用中的http://localhost:8080/news/123和http://localhost:9000/news/123。