NodeJS 使用POST请求而不是GET获取数据

g6ll5ycj  于 2023-03-01  发布在  Node.js
关注(0)|答案(3)|浏览(164)

使用POST路由而不是GET路由来检索数据是不是很糟糕?
我的一条路线有14个变量,用一条没有主体的路真的很复杂,所以我想知道在这种情况下使用POST路线是不是一个用例。
如果没有,是否有其他方法?
示例GET:

this._http.get(`myURL?type=${type}&offset=${offset}&limit=${limit}&var1=${var1}&var2=${var2}&var3=${var3}&var5=${var5}&var6=${var6}&var7=${var7}&var8=${var8}&var9=${var9} ....

转换为POST:

const data = {
 var1: var1,
 var2, var2
 var3: var3,
 ...
}

this._http.post(myURL, data, { headers: headers })

谢谢!

flvtvl50

flvtvl501#

POST有不同的语义(未来的维护者会感谢您没有编写使用“我告诉你东西”动词来表示“我请求东西”请求的代码。
POST对缓存有不同的含义。
如果您的意思是GET,请使用GET。
你担心的似乎是把一堆字符串拼凑在一起形成一个查询字符串可读性不强。不要这样做,这会使代码很难维护,而且你无法转义数据中的特殊字符。浏览器提供an API for that

const data = {
 var1: "Alice & Bob",
 var2: "2+2=4",
 var3: "Hello, world"
};

const url = new URL("/my-api/", location);
const params = new URLSearchParams(data);
url.search = params;
console.log(url.toString());
5lwkijsr

5lwkijsr2#

我认为,一个请求中的参数不应该超过5个。如果需要传输大量信息,建议使用POST方法。

9udxz4iz

9udxz4iz3#

在您的情况下,您可以使用POST请求来提高代码的可读性和可维护性,这意味着您的服务器上的接收端点需要支持POST请求,否则您可能会收到404,这取决于该端点如何处理请求验证。
查看此answer,了解有关何时使用POST与GET的更多信息:
TL;DR是POST请求最好用于破坏性操作,如创建和编辑数据,GET请求应该用于在浏览器上获取数据,因为您不能使用POST启动浏览器请求。
此外,POST请求可以增强安全性,因为您不会在URL上粘贴敏感细节。

相关问题