• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Metoda RESTowa do pobierania wiadomości

0 głosów
76 wizyt
pytanie zadane 13 września 2017 w Java przez Jonki Dyskutant (8,220 p.)

W aplikacji są dwa typy wiadomości: odebrane i wysłane. Proces pobierania tej wiadomości zrobiłem w taki sposób

@GetMapping(value = "/api/message/{id}")
    public
    HttpEntity<? extends MessageDTO> getMessage(
            @ApiParam(value = "Message type", required = true) @RequestParam MessageType messageType,
            @ApiParam(value = "The message ID", required = true) @PathVariable Long id
    ) {
        return messageService.getMessage(id, authorizationService.getUserId(), messageType)
                .map(message -> {
                    if(messageType == MessageType.RECEIVED) {
                        return ResponseEntity.ok().body(converterMessageToReceivedMessageDTO.convert(message));
                    } else /* if(messageType == MessageType.SENT) */ {
                        return ResponseEntity.ok().body(converterMessageToSentMessageDTO.convert(message));
                    }
                }).orElseGet(() -> ResponseEntity.notFound().build());
    }

natomiast obiekty zrobione są w ten sposób

@Data
public class MessageDTO {
    private Long id;
    private String sender;
    private String recipient;
    private String subject;
    private String text;
    private Date dateOfRead;
}

@JsonInclude(JsonInclude.Include.NON_NULL)
public class ReceivedMessageDTO extends MessageDTO {} // Przy odbiorcy usuwam pole 'recipient' dzięki @JsonIclude

@JsonInclude(JsonInclude.Include.NON_NULL)
public class SentMessageDTO extends MessageDTO {} // Przy nadawcy usuwam pole 'dateOfRead' i 'sender' dzięki @JsonIclud

Co sądzicie o takim rozwiązaniu tego problemu?

 

PS: Trochę nie pasują mi te obiekty. Macie pomysł jak zrobić to lepiej? Albo np. przyjmowany MessageType zadeklarować jako Optional i w razie jego braku zaprogramować ustalenie typu i dopiero przejść do bloku return.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 127 wizyt
pytanie zadane 24 lutego w Java przez KubenQPL Maniak (51,560 p.)
0 głosów
2 odpowiedzi 84 wizyt
pytanie zadane 5 czerwca w Java przez Dawid Kreft Początkujący (420 p.)
0 głosów
1 odpowiedź 78 wizyt
pytanie zadane 15 września 2017 w Java przez Jonki Dyskutant (8,220 p.)
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

50,844 zapytań

93,083 odpowiedzi

188,903 komentarzy

24,758 pasjonatów

Przeglądających: 324
Pasjonatów: 22 Gości: 302

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...