spring-boot - 如何在同一请求中传递正文 @RequestBody 和 @RequestParam
问题描述
我正在尝试使用包 dio在同一个请求中传递一个正文和一个参数。
我在 Spring Boot 上有这个方法:
@PostMapping("/guardarproducto")
public ResponseEntity<Usuario> insertProduct(@RequestBody String body, @RequestParam("imagen") MultipartFile imagen) {
....
}
我尝试通过以下方式执行此请求:
FormData formData = new FormData.from({
"barcode": barcode != null ? this.barcode : null,
"idUsuario": user.id,
"nombre": _textController.text,
"aditivos": aditivosLeidos,
"imagen": pickedImage
});
await dio.post('https://10.0.2.2:8443/api/guardarproducto',
data: formData);
但我得到:
{
"timestamp": "2019-07-03T12:11:39.902+0000",
"status": 400,
"error": "Bad Request",
"message": "Required request body is missing: public org.springframework.http.ResponseEntity<ual.dra.rest.Usuario> ual.dra.rest.AditivoController.insertProduct(java.lang.String,org.springframework.web.multipart.MultipartFile)",
"path": "/api/guardarproducto"
}
如何在同一个请求中传递正文和请求参数?
我不在乎使用 Dio 或 Http 包。
解决方案
好的,我不确定颤振和飞镖是如何工作的,但是在春季启动时,当您尝试同时发布两者RequestBody
并 MultiPart
考虑使用@RequestPart
@PostMapping("/guardarproducto")
public ResponseEntity<Usuario> insertProduct(@RequestPart("body") String body,
@RequestPart("imagen") MultipartFile imagen) {
....
}
并且在发布正文时FormData
,您已将 json 设置在一个对象中。让我们说下面是 json。
{
"barcode": "XAWA"
"idUsuario": 1,
"nombre": 1,
"aditivos": "1"
}
然后在FormData
FormData formData = new FormData.from({
"body" : { "barcode": barcode != null ? this.barcode : null,
"idUsuario": user.id,
"nombre": _textController.text,
"aditivos": aditivosLeidos
}
"imagen": pickedImage
});
Note : "body" and "imagen" are in same level.
推荐阅读
- bash - 在 Unix 中查找数组的插入键
- python - 在 Python 中使用 ElementTree 从 XML 中提取数据
- sql - Laravel - 计算查询,里面有连接
- c# - 如何忽略我认为基于属性重复的额外结果?
- spring - 我如何在@BeforeAll(JUnit5)之前执行@Sql
- reactjs - 状态更新时更改呈现的 HTML React
- fish - 鱼壳中的间接变量引用
- android - 将 Firestore 与 Fragment 和 ViewModel 一起使用时,Android 应用程序崩溃
- node.js - npm install 在 grpc@1.20.0 安装脚本失败时失败
- c# - C# 使用数据行中的值计算金额