将参数添加到 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 请求正文中的动态内容