这是我的控制器:
@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对象时处理此类情况。
1条答案
按热度按时间zlhcx6iw1#
当我在网址中使用
http
而不是https
时,我通常会得到403。我认为你可以尝试编辑 Postman 的网址,或者如果这不起作用,尝试告诉Spring Boot 应用程序使用简单的http。