
[英]Express: Remove charset=utf-8 from Content-Type "application/json; charset=utf-8"
[英]Content-Type 'application/json;charset=UTF-8' is not supported SpringBoot Rest
当我尝试在 RestController 上发送 POST 或 PUT 请求时出现此异常 我不使用 Jackson 来解决 SOF 上的所有其他类似问题。 Controller:`@RequestMapping(“/api/v1/users”)@RestController @RequiredArgsConstructor @Validated public class UserController {
private final UserService userService;
@PutMapping
@Validated(UserDto.OnUpdate.class)
public void save(@Valid @RequestBody UserDto userDto) {
User user = UserMapper.INSTANCE.toEntity(userDto);
userService.save(user);
}
@PostMapping
@Validated(UserDto.OnCreate.class)
public UserDto create(@Valid @RequestBody UserDto userDto) {
User userToBeCreated = UserMapper.INSTANCE.toEntity(userDto);
User user = userService.create(userToBeCreated);
return UserMapper.INSTANCE.toDto(user);
}
}`
UserDto: ` @Data @JsonIgnoreProperties({"password", "passwordConfirmation"}) public class UserDto {
@Null(message = "Id must be null", groups = {OnCreate.class})
@NotNull(message = "Id must not be null", groups = {OnUpdate.class})
private Long id;
@NotNull(message = "Name is required", groups = {OnCreate.class, OnUpdate.class})
@Length(min = 3, max = 45, message = "Username must be between {min} and {max} characters", groups = {OnCreate.class, OnUpdate.class})
private String name;
@NotNull(message = "Email is required", groups = {OnCreate.class, OnUpdate.class})
@Length(min = 3, max = 45, message = "Email must be between {min} and {max} characters", groups = {OnCreate.class, OnUpdate.class})
@Email(message = "Email must be valid")
private String email;
@NotNull(message = "Phone number is required", groups = {OnCreate.class, OnUpdate.class})
@Length(min = 3, max = 45, message = "Phone number must be between {min} and {max} characters", groups = {OnCreate.class, OnUpdate.class})
private String phoneNumber;
@NotNull(message = "Password is required", groups = {OnCreate.class, OnUpdate.class})
@Length(min = 6, message = "Password must be longer than {min} characters", groups = {OnCreate.class, OnUpdate.class})
private String password;
@NotNull(message = "Password confirmation is required", groups = {OnCreate.class})
@Length(min = 6, message = "Password confirmation must be longer than {min} characters", groups = {OnCreate.class})
private String passwordConfirmation;
private List<AddressDto> addresses;
private List<OrderDto> orders;
private CartDto cart;
private LocalDate createdAt;
public interface OnCreate {
}
public interface OnUpdate {
}
}`
用户:`@Data public class 用户 {
private Long id;
private String name;
private String email;
private String password;
private String passwordConfirmation;
private String phoneNumber;
private List<Address> addresses;
private List<Order> orders;
private Cart cart;
private LocalDateTime createdAt;
}`
我有类似的请求正在工作,但用户的不同之处在于内部有其他对象,所以我认为问题在于它。
我已尝试调试和删除验证注释,但此请求不会将 go 放入方法中。
正如我提到的, @PostMapping(consumes = "application/json;charset=UTF-8")
不起作用。 我有这个例外,因为我有其他类的引用,但它们不需要验证,但如果我删除其他类的代码,它就可以工作
Spring Boot 绝对支持 Content-Type 'application/json;charset=UTF-8'。 只需将您的注释@PostMapping
为@PostMapping(consumes = "application/json;charset=UTF-8")
请参阅Spring @GetMapping 和 @PostMapping 文章以获取详细说明和示例
解决方案是在其他类的字段上方的@JsonProperty(access = JsonProperty.Access.READ_ONLY)
注释中。 当我向服务器发送请求时,它可以避免验证
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.