【问题标题】:Adding parameter to rest API fetch method (ReactJS > Spring boot)将参数添加到 REST API 获取方法(ReactJS > Spring boot)
【发布时间】:2021-02-11 19:06:44
【问题描述】:

我只是想通过 fetch 方法向我的 rest api 发送一个值,但似乎无法让它工作。 这是我目前拥有的:

反应:

getFloorplans() {
        fetch('/api/ssid')
            .then(response => response.json())
            .then(message => {
                this.setState({
                    floorplan: message[0]
                })
            });

        fetch('/api/ssid', {
            method: "POST",

            //make sure to serialize your JSON body
            value: {ssid: this.state.SSID}
        })
            .then( (response => response.json()
                .then(message => {
                    console.log(message);
                })
        ))};

Spring Boot REST API:

@RestController
public class FloorplanController {
    //Floorplan floorplan = new Floorplan();

    @RequestMapping("/api/ssid")
    public void someMethod(@RequestParam String value) {
        System.out.println(value);
    }
}

这是我目前遇到的错误:

【问题讨论】:

  • 如果你正在执行一个POST请求,你应该使用@PostMapping("/api/ssid"),目前没有指定HTTP方法。第二件事,我不太了解 React,但如果您将值作为 JSON 主体发送,您应该在方法中使用 @RequestBody
  • 另外,我认为你必须使用body 而不是value,因为这是fetch 所期望的:developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
  • 然后我如何从控制器的主体中获取数据?
  • 我对 Spring 不熟悉,但你应该有一些请求参数来提取主体 @Dylan75

标签: reactjs spring-boot post fetch rest


【解决方案1】:

异常告诉您缺少请求参数。这意味着您的控制器中 @RequestParam String value 的值丢失了。请求应如下所示http://yourhost/api/ssid?value=somevalue

【讨论】:

    【解决方案2】:

    您应该在正文中设置标题和参数。

    fetch('/api/ssid', {
         method: "POST",
         headers: {
              'Content-Type': 'application/json'
         },
         body: {ssid: this.state.SSID}
    })
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    相关资源
    最近更新 更多