use*_*206 3 java spring json web
这是涉及的课程。
public class UserAuthDto {
private String username;
private String password;
private List<String> roles;
private String tenantCode;
public UserAuthDto(String username,
String password,
List<String> roles,
String tenantCode){
this.username=username;
this.password=password;
this.roles=roles;
this.tenantCode=tenantCode;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public void setRoles(List<String> roles) {
this.roles = roles;
}
public void setTenantCode(String tenantCode) {
this.tenantCode = tenantCode;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public List<String> getRoles() {
return roles;
}
public String getTenantCode() {
return tenantCode;
}
}
Run Code Online (Sandbox Code Playgroud)
另一个DTO
public class UserAuthRequest {
private UserAuthDto userAuthDto;
public UserAuthRequest(UserAuthDto authDto){
if(authDto == null){
throw new IllegalArgumentException("User Authentication DTO Should Not be null");
}
this.userAuthDto = authDto;
}
public String getUsername(){
return userAuthDto.getUsername();
}
public String getPassword(){
return userAuthDto.getPassword();
}
public List<String> getRoles(){
return userAuthDto.getRoles();
}
public String getTenantCode(){
return userAuthDto.getTenantCode();
}
public void setUsername(String username) {
this.userAuthDto.setUsername(username);
}
public void setPassword(String password) {
this.userAuthDto.setPassword(password);
}
public void setRoles(List<String> roles) {
this.userAuthDto.setRoles(roles);
}
public void setTenantCode(String tenantCode) {
this.userAuthDto.setTenantCode(tenantCode);
}
}
Run Code Online (Sandbox Code Playgroud)
这是正在处理请求的控制器。
@RequestMapping(value = "authenticate", method = RequestMethod.POST,consumes = "application/json",produces = "application/json")
public UserAuthResponse authenticate(@RequestBody UserAuthRequest authRequest){
//.
}
Run Code Online (Sandbox Code Playgroud)
但是当我发送数据时
{"username": "test","password":"test","roles":null,"tenantCode":"test"}
Run Code Online (Sandbox Code Playgroud)
我收到一个400错误的请求。知道为什么吗?
Spring使用Jackson将请求中的JSON映射到Java对象,以作为参数传递给您的处理程序方法。
这是JSON类型。这是Jackson进行JSON映射的方式:
Map或自定义类对象
Collection类型(List,Set等)int,double,Long等获得原始和引用类型)String对象(如果JSON字符串是键,则映射到字段)nullfalse和true。您提供了以下JSON
{"username": "test","password":"test","roles":null,"tenantCode":"test"}
Run Code Online (Sandbox Code Playgroud)
这是一个JSON对象,具有4键-值对,其中键是username,password,roles,和tenantCode。因此,您需要一个Java类,其中包含带有这些名称的字段(或属性)。您有这样的课程UserAuthDto。那就是您应该使用的参数类型。
您可以通过在类路径上提供适当的slf4j和logback或log4j库并为Spring的记录器提供适当的配置来启用日志记录。
| 归档时间: |
|
| 查看次数: |
5926 次 |
| 最近记录: |