繁体   English   中英

Content-Type 'application/json;charset=UTF-8' 不支持 SpringBoot Rest

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM