今天我们来看一下Native Camp用户设定,看一下有没有遗漏什麽栏位没有设置的,
这边可以看到可修改的栏位有
果然根据可修改的资料,我们发现了有许多没有观察到的栏位需补充,生日、电子报、图片路径、国籍、居住地、不公开设定
更新後的Users.java
package com.mock.nativecamp.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "Users")
@Data
@AllArgsConstructor
public class Users {
@Id
private String id;
private String name;
private String email;
private String password;
private String status;
private String coin;
private String timezone;
private String payMethod;
private String nextPayCheck;
private String ssoId;
private String gender;
private String creditToken;
private String profilePic;
private boolean news;
private String birthday;
private String userNationality;
private String userResidence;
private boolean genderNotify;
private boolean birthdayNotify;
private boolean userNationalityNotify;
private boolean userResidenceNotify;
}
我自己在今年开始写Spring时,会习惯去建立request以及response的Object class,这样在做栏位检查以及统一管理很方便,再加上使用lombok整个很清爽简单。
首先在payload资料夹中新增SignupReq.java
package com.mock.nativecamp.payload;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NonNull;
@Data
@AllArgsConstructor()
public class SignupReq {
@NonNull
private String name;
@NonNull
private String email;
@NonNull
private String password;
@NonNull
private String birthday;
@NonNull
private String gender;
@NonNull
private String credit_token;
}
然後将UsersController.java中的SignupUser @RequestBody改成SignupReq
@PostMapping(path = "/signup", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public Object SignupUser(@RequestBody SignupReq signupReq) throws Exception {
return usersService.signupUser(signupReq);
}
这样只要request没有带任何一个@NonNull则会有error
Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of `com.mock.nativecamp.payload.SignupReq`, problem: gender is marked non-null but is null; nested exception is com.fasterxml.jackson.databind.exc.ValueInstantiationException: Cannot construct instance of `com.mock.nativecamp.payload.SignupReq`, problem: gender is marked non-null but is null
at [Source: (PushbackInputStream); line: 6, column: 1]]
这边错误可以看到没有带gender,这样就可以对request data作保护,少带必要栏位可以直接抛错,这边只要去做error handler就可以很方便的去管理,还有如果多带其他不相关的栏位,因为Object没有宣告,所以会直接忽略。
今天完成了users的栏位遗漏检查以及新增了注册时的request检查,明天会继续在完善Users的各种CRUD。
<<: D7 - 彭彭的课程#Python 有序列表的基本运算 - List、Tuple
>>: Day 22. Hashicorp Vault: HTTP Status Codes
今天是铁人赛的最後一天了(虽然我已经完赛了),这部影片也会是这系列的最後一部了,真的要结束了(´༎ຶ...
什麽是 Container ? 在了解 Container 之前,先来聊聊服务是如何建立的。传统服务...
RESTful API 在 Amazon Linux 2 上传图片实作-Day 07 RESTful...
讲到这里,我脑海里就一句话想起来,冷淡熊的鬼扯蛋:兵分2999路。 基本上这是不行的,错误示范。专案...
开发框架 在昨日有提到负责後端的研习生的第一个功课是确定开发的框架,而在评估了一个月之後的考量对象包...