Spring Boot Maven и MySQL обработка ошибок - PullRequest
0 голосов
/ 18 июня 2020

У меня есть следующий запрос 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 могут быть ответом, но я не уверен, что лучший способ реализовать, если это верно.

1 Ответ

0 голосов
/ 18 июня 2020

У вас уже есть ответ.

Мне кажется, ответом может быть ResponseEntity или RestControllerAdvice

Вы только создаете ответ dto в своем формате. затем поместите его в ResponseEntity в случае ошибки или нет.

...