将参数添加到 REST API 获取方法(ReactJS > Spring boot)

Posted

技术标签:

【中文标题】将参数添加到 REST API 获取方法(ReactJS > Spring boot)【英文标题】:Adding parameter to rest API fetch method (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 【参考方案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
)

【讨论】:

这仅确认您发送的数据,但我认为问题出在我的控制器上,但我不知道如何在那里提取正文数据 参考这个。 ***.com/questions/32201441/…

以上是关于将参数添加到 REST API 获取方法(ReactJS > Spring boot)的主要内容,如果未能解决你的问题,请参考以下文章

Azure 数据工厂 - 尝试将参数添加到 REST API 请求正文中的动态内容

将多个参数之一发送到 REST API 并使用它

将 REST API 获取请求转换为 GraphQL

通过 TFS REST API 将工作项添加到板列

Sharepoint rest api - 创建字段并添加到所有内容类型

如何使用 Swift URLSession 通过 REST api 将图像和其他参数作为表单数据发布?