Web Services Http Get与Http Post获取数据,推荐哪一种?

jogvjijk  于 2023-01-26  发布在  其他
关注(0)|答案(2)|浏览(154)

最近我遇到了一个问题,我不知道在REST API中哪种方法是好的(标准的)处理方法。
问题很简单,我们都知道在标准的REST API中,我们使用Get请求来获取数据,Post请求来向服务器发送数据,以创建/更新资源。
为此,如果我们想获得应用程序中所有用户的列表,我们将使用带有如下url的GET请求:HTTP GET /用户
这很简单。让我们来看看我们的场景。我们的应用程序允许用户创建自己的帖子,人们可以评论、点赞或关注他们或其他用户创建的帖子。最重要的是,我们有数十亿的现有用户。
现在,假设我们有一个帖子,已经与成千上万的用户进行了交互(热门帖子),我们希望返回该用户列表。要使此工作正常进行,我们至少需要将帖子ID发送到服务器以供查找。显然,我们不希望一次返回数千个用户的列表。这对于前端处理来说太多了。为此,我们会引入一个分页号和页面大小来限制返回的用户数。2因此,除了帖子ID,我们还需要发送页面号和页面大小。
现在,我们有两种方法来构造请求:

GET request: /users?postId=123&pageNumber=1&pageSize=10

POST request /users with body request 
{
  "postId": 123,
  "pageNumber": 1,
  "pageSize": 10
}

GET看起来是一个标准的方法,因为它查询数据并将数据返回到前端,但同样,postId是公开的。另一方面,POST更安全一些,因为参数不存储在浏览器中
哪一种更标准,在这种情况下推荐使用?

rkttyhzu

rkttyhzu1#

使用获取。
您对URL中出现的帖子ID有何顾虑?
如果所有相关的端点都是安全的,那么用户就不能对该id做任何事情,除非经过身份验证并被授权对该帖子执行操作。
此外,发布的请求的主体可以在浏览器的开发工具中查看,所以发布只是对数据进行了一点模糊处理,实际上并没有保护数据。

jgzswidk

jgzswidk2#

获取。您应该保护程序,使其不被滥用。
如果你发送一个post请求来获取成千上万的数据,你的服务器就会宕机。
你应该使用get和pagination来得到最好的结果。

相关问题