Spring:从客户端发送请求正文时出错,但与邮递员一起工作吗?

时间:2018-06-23 08:59:41

标签: javascript java spring rest spring-mvc

我有一个Spring Rest后端设置以及一个React Client。两者都设置在不同的本地端口上。我正在尝试使用对我的spring rest api的访存调用从React客户端发送一个简单的请求。

使用Postman发送POST请求时,API会按预期响应。

从React客户端发送请求时,我收到以下400错误:

org.springframework.http.converter.HttpMessageNotReadableException: 
Required request body is missing: public 
org.springframework.http.ResponseEntity<?> 

我已经执行以下操作:

  1. 在我的spring应用程序中禁用了CSRF。
  2. 设置全局CORS配置以接受所有请求。
  3. 多次确保请求正文正确且与通过Postman发送的请求正文相同。

这是我从react client获得的请求:

fetch(API_BASE_URL + '/api/auth/signin', {
        method: 'POST',
        headers: new Headers({
            'Content-Type': 'application/json;charset=UTF-8',
            'Access-Control-Request-Method': 'POST'
        }),
        body: {
            username: this.state.uname,
            password: this.state.password,
        }
    }).then(
        function (response) {
            if (response.status !== 200) {
                console.log('Looks like there was a problem. Status Code: ' +
                    response.status);
                return;
            }

            // Examine the text in the response
            response.json().then(function (data) {
                let json = JSON.parse(data);
                let token = json.tokenType + " " + json.accessToken;
                localStorage.setItem(ACCESS_TOKEN, token);
                alert('successfully saved token:' + token);
            });
        }
    )
        .catch(function (err) {
            console.log('Fetch Error :-S', err);
        });

1 个答案:

答案 0 :(得分:0)

对于那些感兴趣的人:

在有效负载中传递的数据格式不正确。尽管这可能看起来不合逻辑,但按如下方式创建变量:

let payload = {
        username: this.state.username,
        password: this.state.password,
    };

并将其作为要获取的主体传递似乎可行。

希望这可以帮助其他面临相同问题的人。