2017-08-28 6 views
0

Spring unterstützt die Annotation-basierte Validierung auf Controller-Ebene.Wie validiere ich RestTemplate Response?

(1) Müssen solche Validierungen auch auf der RestTemplate-Ebene für Antworten von REST-Aufrufen durchgeführt werden?

Wenn die Antwort ja lautet: (2) Wird es auf der RestTemplate Unterstützung für die Validierung von Antworten aus Ruheanrufen geben, die irgendwann in der Zukunft stattfinden?

Wenn die Antwort lautet: (3) warum?

+0

Klarstellung: Meine Frage bezieht sich NICHT auf die Validierung einer Anfrage. Meine Frage ist "Validierung einer Antwort von einem anderen Dienst". – Jothi

Antwort

0

Für mich sind die Fragen ziemlich groß. :). Als mein Verständnis möchten Sie die Validierung im REST-Service fragen, die Spring unterstützen kann.

1. Müssen solche Validierungen auch auf der RestTemplate-Ebene für Antworten von REST-Aufrufen durchgeführt werden?

Eigentlich hängt es von Ihren Apps oder Ihrem Geschäft ab. Sie können dies am Controller tun, oder Sie können dies in Service Level tun oder Sie können Ihre benutzerdefinierte Validierung durchführen. Für mich zwingt dich niemand, etwas zu tun.

Allerdings, wie meine Erfahrung, sollten wir die Validierung sicher durchführen. Also meine Antwort hier ist JA.

2. Wird es auf der RestTemplate Unterstützung dafür geben, die Antworten von Ruheanrufen irgendwann in der Zukunft zu validieren?

Ich nehme an, dass Sie das Detail der Validierung möchten ?! Recht? Spring unterstützt viele Dinge für die Validierung. Für die einfache Art und Weise können Sie PathVariable oder RequestParameter .Für Beispiel verwenden:

@GetMapping("/test/{name}") 
    private String test(@PathVariable(value = "name", required = true) String name){ 
     //... 
    } 

Frühling werden alle Anforderungen validieren und mit 400 Bad Request reagieren, wenn der gewünschte Parameter fehlt oder hat eine falsche Art ...

Frühling unterstützt auch die JSR 303 Bean Validation: http://beanvalidation.org/1.0/spec/ zum Beispiel hier:

public class MessageBean { 
    @NotNull 
    private String title; 
    @NotNull 
    private String message; 

    // getters/setters/etc 
} 

Oder Sie möchten die benutzerdefinierte Benutzeraktion wie tun:

@ExceptionHandler 
@ResponseStatus(HttpStatus.BAD_REQUEST) 
public ErrorResponse handleException(MethodArgumentNotValidException exception) { 
    //.... 
    return ErrorResponse.builder().message(errorMsg).build(); 
} 

Einige weitere Details hier: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-validation

So hängt es von den Unternehmen, die uns die Validierung auf jeder Ebene zu tun erfordert.

3. Wenn die Antwort Nein ist: (3) warum?

Keine Notwendigkeit, dies zu beantworten. :)

Hoffen, dass hilft

+0

Vielen Dank für Ihre Antwort, aber das ist nicht das, was ich gesucht habe. Wahrscheinlich war meine Frage nicht klar genug. Ich bin in Ordnung mit der Validierung einer "Anfrage" auf jeder Ebene, abhängig von technischen Geschäftsanforderungen. Meine Frage ist _NOT_ in Bezug auf die Validierung einer Anfrage.Meine Frage ist "Validierung einer Antwort von einem anderen Dienst". – Jothi