У меня есть следующий запрос Spring Boot MySQL:
visitorrepository.save(newvisitor)
После выполнения этого MySQL запроса я хочу вернуть успех JSON или сбой JSON в следующем формате :
Состояние успеха :
{
"success": true,
"message": "Some Helpful Message",
"data": { } //This would be the newvisitor JSON that includes the primary key (id)
}
Состояние отказа :
{
"success": false,
"message": "Some Helpful Message",
"error_code": "404", // This should be whatever error number was returned
"data": { } //This would be the newvisitor JSON that does not include the primary key (id)
}
В angular ответ захвачено следующим образом:
this.http.post('http://localhost:8080/v1/api/post', this.visitor.value).toPromise().then((response:any) => {
console.log(response);
})
сообщение. java
@CrossOrigin(origins = "http://localhost:4200")
@RestController
public class post {
@Autowired
visitorrepository visitorrepository;
@PostMapping("/v1/api/post")
public void insert(@Valid @RequestBody newvisitor newvisitor) {
try {
visitorrepository.save(newvisitor);
return // Success State JSON
} catch () {
return // Error State JSON
}
}
}
newvisitor. java
@Getter
@Setter
@Entity
@Table(name = "visitors")
public class newvisitor {
@Id
@GeneratedValue
private Long id;
@Size(min=1, max=250)
@NotBlank
private String firstname;
@NotBlank
private String lastname;
@NotBlank
private String month;
@NotBlank
private String day;
@NotBlank
private String year;
@NotBlank
private String socialsecuritynumber;
@NotBlank
private String street1;
private String street2;
@NotBlank
private String city;
@NotBlank
private String state;
@NotBlank
private String zip;
@NotBlank
private String phone;
@Email
@NotBlank
private String email;
public newvisitor(){
super();
}
public newvisitor(String firstname, String lastname, String month, String day, String year, String socialsecuritynumber, String street1, String street2, String city, String state, String zip, String phone, String email) {
super();
this.firstname = firstname;
this.lastname = lastname;
this.month = month;
this.day = day;
this.year = year;
this.socialsecuritynumber = socialsecuritynumber;
this.street1 = street1;
this.street2 = street2;
this.city = city;
this.state = state;
this.zip = zip;
this.phone = phone;
this.email = email;
}
}
visitorrepository. java
@Repository
public interface visitorrepository extends CrudRepository<newvisitor, Long> {
}
Идея состоит в том, чтобы перехватить все: от MySQL базы данных, не подключающейся до недопустимой записи данных, до дублирования записей, в основном всего, что препятствовало работе исходного запроса visitorrepository.save (newvisitor), и вернуть это в angular как JSON. Я чувствую, что ResponseEntity или RestControllerAdvice могут быть ответом, но я не уверен, что лучший способ реализовать, если это верно.