2017-07-09 9 views
0

Ich habe einen Controller Benutzer zu sortierenDie Anzahl der Anfragen an die Abfrage gesendet

@GetMapping(value = "/users", produces = MediaType.APPLICATION_JSON_VALUE) 
public HttpEntity<List<User>> getUsers(
     @RequestParam(required = false) String q, 
     @RequestParam(required = false, defaultValue = "1") int page, 
     @RequestParam(required = false, defaultValue = "1") int pageSize, 
     @RequestParam(required = false, defaultValue = "id") String sort 
) { 
    return Optional 
      .ofNullable(q) 
      .map(v -> ResponseEntity.ok().body(userService.findByUsernameContaining(q, page - 1, pageSize, new Sort(Sort.Direction.ASC, sort)))) 
      .orElseGet(() -> 
        ResponseEntity.ok().body(userService.findAll(page - 1, pageSize, new Sort(Sort.Direction.ASC, sort))) 
      ); 
} 

, die als Parameter 4 Werte annehmen kann. Es sieht nicht zu ästhetisch aus und ich frage mich, wie es visuell verbessert werden kann.

  1. Ich habe mich gefragt, ob ich eine Klasse mit diesen vier Variablen erstellen und dann eine Methode erstellen soll, die @ModelAttribute registriert ist. Ich habe es jedoch schnell aufgegeben, weil ich 'defaultValue' nicht wie nötig einstellen kann.

  2. Die Art und Weise, die ich kam, war, den Parameter 'ID' und die anderen drei zu lassen, um das 'Pegeable' Objekt mit '@PageableDefault' mit den Werten auf 'size = 1, page = 1 angehängt zu machen , sort = "id". Diese Methode wird jedoch auch nicht bestehen, da ich beim Übergeben der Seitennummer an die Site unbedingt 1 von dem Wert von "page" subtrahieren muss, und in diesem Fall ist es unmöglich.

Haben Sie eine Idee?

Antwort

0

Ich persönlich sehe kein Problem darin, viele @RequestParam wie Sie beschrieben.

Denken Sie an die Vorteile:

  • es ist kristallklar
  • es ist einfach

nun den Nachteil zu testen:

  • ist es ausführliche

Die Vorteile überwiegen für mich die Nachteile. Es sei denn, ich vermisse etwas.

Verwandte Themen