如果我想通过这个 json 代码,制作控制器的方法是什么

What's the way to make controller if I want to pass this json code

我想问你如果我想像这样通过 JSON 我的休息控制器应该是什么样子(在 springboot 中)

user: {email: "c", password: "c", username: "c"}

顺便说一句 JSON 看起来效果不错:

{email: "c", password: "c", username: "c"}

所以我认为这取决于 JSON 中的 'user' 词,但问题是我的前端发送所有这样的请求,所以更好的方法是使它在后端可操作.

因为我的实际情况如下:

@PostMapping("/users")
    public void register(@Valid @RequestBody ApplicationUserEntity newUser){

        registerService.registerNewUser(newUser);

    }

实际上没有用。

这是 ApplicationUserEntity class:

@Entity
@Data
@Table(name = "users")
public class ApplicationUserEntity implements UserDetails {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @JsonIgnore
    private Long userId;

    @JsonProperty("email")
    private String email;

    @JsonProperty("username")
    private String username;

    @JsonProperty("password")
    private String password;

    public ApplicationUserEntity() {
    }

    public ApplicationUserEntity(String email, String username, String password) {
        this.email = email;
        this.username = username;
        this.password = password;
    }

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return Collections.singleton(new SimpleGrantedAuthority("ROLE_USER"));
    }

    @Override
    public String getPassword() {
        return password;
    }

    @Override
    public String getUsername() {
        return username;
    }

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return false;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        return true;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

您的请求正文可以是以下对象:

public class Request {
   private ApplicationUserEntity user;
   // getters, setters ...
}

它的字段就是你创建的Entity对象。在这种情况下,您的控制器方法将如下所示:

@PostMapping("/users")
public void register(@Valid @RequestBody Request newUser){

    registerService.registerNewUser(newUser);

}

本例中的 JSON 请求为:

{
   user: {
     // fields of the ApplicationUserEntity 
   }
} 

注意:始终建议您使用 DTO 对象 作为请求和响应对象。因此,在这种情况下,您宁愿拥有一个包含电子邮件、用户名、密码字段的 DTO 对象,并将此对象作为请求中的一个字段 class.