邮递员表单数据发送带有文件的复杂对象
Posted
技术标签:
【中文标题】邮递员表单数据发送带有文件的复杂对象【英文标题】:Postman form-data sending complex object with file 【发布时间】:2019-01-17 19:38:39 【问题描述】:如何在 Postman 中发送(或者不可能?)带有文件的复杂对象
我的对象:
class Client
private String clientName;
private Platform platform;
class Platform
private String android;
private String ios;
我的控制器类:
@PostMapping(value = "/evaluate", produces = "application/json")
public ResponseEntity<ServerResponse> sendEvaluateForm(Client client,
@RequestParam(value = "files", required = false) MultipartFile files)
return new ResponseEntity<>(HttpStatus.OK);
这就是我在邮递员中发送请求的方式:
当我通过客户端中的基本字段“clientName”时它起作用。 但我不知道如何传递平台对象。 我试图传递密钥:平台 并在值:“android”:“asd”,“ios”:“xxx” 但我只有 BadRequest(400)
【问题讨论】:
我认为不可能同时发送 JSON 有效负载和表单数据。您可以将 JSON 作为表单的一部分嵌入,但我认为在这种情况下您需要手动进行解组。不过我不完全确定,所以也许有更多 Spring Web 经验的人可以纠正我(我通常坚持使用 JAX-RS) 感谢您的回复。我想你可能是对的。我尝试以几种不同的方式做到这一点,但这些都不起作用(我的朋友正在向我发送这个 JS 中的表单+文件)。我只能在具有基本值的 1 个对象中获取此表单,但它非常大(大约 100 个字段),这就是为什么我想将它放在单独的对象中。但如果我找不到发送 JSON+文件的方法,我想我将不得不坚持下去。 【参考方案1】:您可以尝试将客户端数据作为纯字符串发送并在控制器端进行解析。
@PostMapping(value = "/evaluate", produces = "application/json")
public ResponseEntity<?> sendEvaluateForm(@RequestParam ("client") String client,
@RequestParam(value = "files", required = false) MultipartFile files) throws IOException
ObjectMapper mapper = new ObjectMapper();
Client clientobject = mapper.readValue(client, Client.class);
return ResponseEntity.ok().build();
邮递员的要求:
还有你的 POJO 类:
class Client
private String clientName;
private Platform platform;
public String getClientName()
return clientName;
public void setClientName(String clientName)
this.clientName = clientName;
public Platform getPlatform()
return platform;
public void setPlatform(Platform platform)
this.platform = platform;
class Platform
private String android;
private String ios;
public String getAndroid()
return android;
public void setAndroid(String android)
this.android = android;
public String getIos()
return ios;
public void setIos(String ios)
this.ios = ios;
【讨论】:
哇,我没想过这个主意。谢谢。【参考方案2】:使用 Postman,您可以构建一个同时包含 Files 和 Object 的请求。
Result 预期为后端 req.body:
street: '69 Pinapple street', city: 'Apple', zip: 6969, country: 'Pen'
【讨论】:
如果有另一个层次嵌套在里面怎么办?以上是关于邮递员表单数据发送带有文件的复杂对象的主要内容,如果未能解决你的问题,请参考以下文章
如何在邮递员的同一请求中发送多部分/表单数据和嵌套 json?