javascript - 所需的字符串参数不存在 : communicate with fetch

标签 javascript spring fetch

我正在尝试使用 fetch API 从我的代码中删除 JQuery,但在将数据发送到服务器时遇到问题:

这是我的功能:

url = '/authentication'
fetch(url, {
     method: 'POST',
     headers: {"Content-Type" : "application/json"},
     body: {username: username}
});

和 Spring 端:

@PostMapping("/authentication", produces = "application/json")
@ResponseBody
public String authentication(HttpServletRequest request, @RequestParam(name = "username") String username){
...
}

但我收到以下错误:

Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'username' is not present]

使用 fetch 发送数据的正确方法是什么,我做错了什么? 我尝试放置 JSON.stringify 或使用 {"username":username} 但它不会改变任何内容。

感谢您的帮助

编辑 06/24 :我用 url = '/authentication?username='+username 解决了这个问题,但我遇到了一个很长的 jsonResponse 问题,其中有很多字符...(请求 header 太大,仅在我的手机上)

最佳答案

@RequestParam 会解析 url 中的 var。

url = '/身份验证?用户名=abc'

如果你想与postbody打交道

public String authentication(HttpServletRequest request, @RequestBody YourRequest request)

你的请求.java

@Data
public class YourRequest {


    private String username;
}

关于javascript - 所需的字符串参数不存在 : communicate with fetch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56681872/

相关文章:

javascript - 努力从 fetch api 获取数据以获取对 http ://swapi. co 的请求

javascript - 如何访问响应数组中的promiseValue?

javascript - 合并连续的观测值

javascript - 调用 div 的 id,其中 id 看起来像 id=@something

javascript - 每 30 秒更改一次 iframe 源。

spring - 有没有办法在另一个项目中重用来自多个项目的 cucumber 步骤?

php - 如何通过javascript更改按钮图像

java - Spring RESTful API 获取客户端信息

java - Spring MVC 中 Controller 方法的参数

linux - 通过从原始 svn 仓库中获取所有 svn 部分来克隆一个 git-svn 仓库