postman 如何在Spring Boot 中发送MultipartFile和Json

uxhixvfz  于 2023-01-30  发布在  Postman
关注(0)|答案(1)|浏览(282)

这是我的控制器:

@RestController
@RequestMapping("/api/product")
public class ProductController {

    @Autowired
    ProductService productService;
    
    @PreAuthorize(value = "hasRole('ADD_PRODUCT')")
    @PostMapping(value = "/add", consumes = {
            MediaType.MULTIPART_FORM_DATA_VALUE,
            MediaType.APPLICATION_JSON_VALUE
    })
    public HttpEntity<?> addProduct(@CurrentUser User user,
                                    @RequestPart("files") MultipartFile multipartFile,
                                    @Valid @RequestPart("info") ProductDto productDto) {
        ApiResponse apiResponse = productService.addProduct(user, productDto, multipartFile);
        return ResponseEntity.status(apiResponse.isSuccess() ? 201 : 409).body(apiResponse);
    }

}

它应该接收一个MultipartFile和Json对象,我的ProductDto类是:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProductDto {

    @NotNull(message = "Name can't be empty")
    @NotBlank(message = "Name can't be blank")
    private String name;
    
    @Length(max = 1000)
    private String description;
    
    
    @NotNull(message = "Price can't be empty")
    private double price;//Evaluated in the $
    
    @NotNull(message = "You should choose one of the categories")
    private UUID categoryId;

}

尝试发送请求

时遇到困难
但它总是给我403禁止,我不知道原因,这个请求根本没有来到addProduct()方法,我有权限"ADD_PRODUCT"。@CurrentUser注解类是

@Documented
@Retention(value = RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER) 
@AuthenticationPrincipal
public @interface CurrentUser { }

也不会引发任何错误或异常
我已经尝试了@RequestParam和@RequestPart这两个注解,我想学习如何在同时发送MultipartFile和Json对象时处理此类情况。

zlhcx6iw

zlhcx6iw1#

当我在网址中使用http而不是https时,我通常会得到403。我认为你可以尝试编辑 Postman 的网址,或者如果这不起作用,尝试告诉Spring Boot 应用程序使用简单的http。

相关问题