首页 > 解决方案 > 带有 GET 正文的 Javascript REST API

问题描述

我正在使用 Javascript(前端),并且有一位同事在使用 NodeJS 在后端工作。调用 GET 请求时,他要求我将数据放入正文中,但我不知道该怎么做。(如果我将此代码用于 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);
    });

标签: javascriptnode.jsrestgetrequest

解决方案


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

如果你想发送一个正文 (JSON),你应该使用 PUT 和 POST。

最好的可能是:

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

如果您想知道选择哪一个,请查看以下问题:(PUT vs. POST in REST


推荐阅读