繁体   English   中英

带有 GET 主体的 Javascript REST API

[英]Javascript REST API with body in GET

我在 Javascript(前端)工作,有一个同事在后端使用 NodeJS。 调用 GET 请求时,他要求我将数据放入 body 中,但我不知道该怎么做。 (如果我将此代码用于 POST 请求,则它工作正常)。 你能告诉我这是否可能以及如何做到这一点? 他说这是可能的,但我在谷歌上搜索了很多,找不到正确的方法来做到这一点。 我得到的错误: “无法在 'Window' 上执行 'fetch':使用 GET/HEAD 方法的请求不能有正文。”

    let URL = "http://localhost:3000/verifyUser";
    let token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2NjJDMTRBNk";
    
    fetch(URL, {
        method: request,
        mode: 'cors',
        body: JSON.stringify({
            user: 'Carlos6',
            password: '543534543',
            email: "algo6@gmail.com"
        }),
        headers: {
            'Accept' : 'application/json',
            'Content-type': 'application/json; charset=UTF-8',
            'auth-token': token
        }
    }).then(function (response) {
        if (response.ok) {
            return response.json();
        }
        return Promise.reject(response);
    }).then(function (data) {
        console.log(data);
    }).catch(function (error) {
        console.warn('Something went wrong.', error);
    });

您正在使用 HTTP GET 并发送正文。

如果要发送正文 (JSON),则应使用 PUT 和 POST。

最好的可能是:

  • 将您的客户端代码更改为method: "PUT"
  • 更改服务器以访问 PUT 请求

如果您想知道选择哪一个,请查看这个问题:( REST 中的 PUT 与 POST

如果你想发送一个带有正文的请求,那么你应该发出一个 POST 请求而不是一个 GET 请求。 GET 请求不能有其性质和主要目标的主体。 GET-request 的所有参数必须仅在 URL 本身中指明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM