我有一个标准的控制器方法来响应 /products
路线:
@PostMapping(value = "/products")
public ResponseEntity<ResponseMessage> postProduct(@RequestBody ProductUpsertRequestBody postRequest)
{
.
.
.
``` `ProductUpsertRequestBody` 只是一个简单的类,我用它来捕获json负载:
public class ProductUpsertRequestBody implements Serializable
{
@JsonProperty("id") private String clientProductId;
@JsonProperty("product_name") private String productName;
@JsonProperty("product_type") private String productType;
@JsonProperty("cost_in_cents") private Long costInCents;
@JsonProperty("description") private String description;
@JsonProperty("label_color") private String labelColor;
.
.
.
我需要用一个 `MultiPartFile` 参数,将其转换为:
@PostMapping(value = "/products")
public ResponseEntity postProduct(@RequestBody ProductUpsertRequestBody postRequest, @RequestParam MultiPartFile myImage)
{
.
.
.
但我对如何调用这个控制器方法感到困惑。用一个html表单创建一个基本的前端并不难,它可以上传任意多的图片,但是我失去了发送json负载的能力(这是一个RESTAPI,我通过swagger 2.9,postman,有效地发送请求) `curl` 电话)。如何将二进制图像上传与json负载结合起来,以便我的控制器能够捕获它?也许同样重要的是,有没有一种方法可以让我通过swagger或postman来实现这一点,这样我就可以对我的api进行端到端的测试?
1条答案
按热度按时间voj3qocg1#
这就是为什么你有多个部分的要求,这个想法是你发送多个独立的部分,每一个都有自己的内容类型。
Spring Boot支持开箱即用的这种情况。下面是一个例子:
为了测试这一点,您可以使用postman,它也支持这种请求