Ocena projektu serwisu

0

Właśnie umieściłem na GitHub mój najnowszy projekt napisany w Java w Spring oparty na REST API. Nie jest to RESTfull, ale w większości serwis działa o REST. https://github.com/JonkiPro/REST-Web-Services Najwięcej pracy poświęciłem właśnie RESTOwym kontrolerom https://github.com/JonkiPro/REST-Web-Services/tree/master/src/main/java/com/service/app/rest , dlatego najbardziej potrzebuję opinii tego pakietu. Co do całości, to chciałbym zaciągnąć opinii jakiegoś specjalisty, który oceni całokształt projektu pod względem estetyki i wydajności kodu.

1

Nie sprawdzałem wszystkiego ale parę obserwacji:

  1. To nie jest restowe api.
    https://en.wikipedia.org/wiki/Representational_state_transfer - Punkt "Uniform interface" nie jest zachowany. Nie operujesz zasobami tylko "metodami" do wykonania na serwerze.
    Wydaje mi się również że źle używasz słowa REST i RESTful. Serwis nie może być jednocześnie REST i nie RESTful.
    https://stackoverflow.com/questions/1568834/whats-the-difference-between-rest-restful.
    Jak zastanawiasz się jak dobrze zaprojektować API to polecam sprawdzić np: https://stripe.com/docs/api#bank_accounts albo https://developer.github.com/v3/ - Można od nich trochę podpatrzeć co i jak zrobić, mają całkiem przemyślane API.

  2. /getSentMessages -> zwraca 404 w przypadku braku wiadomości, ja bym zwrócił pustą listę. Jest różnica między - 'masz 0 wiadomości' a 'coś takiego jak wiadomości - nie istnieje'. Gdyby to było restowe API to /message mogłoby zwrócić pustą listę a ewentualnie /message/<id> mogłoby zwrócić 404 w przypadku braku wiadomości o konkretnym id.

  3. /removeReceivedMessage -> Przeiterowanie po wszystkich (w najgorszym przypadku) wiadomościach żeby skasować 1 wiadomość jest mało optymalne przy dużej ilości wiadomości. Lepiej żeby baza to zrobiła.

  4. Są 2 opcje na organizację pakietów. Warstwy vs Przeznaczenie. Ja jestem za tą 2 opcją (https://hackernoon.com/package-by-features-not-layers-2d076df1964d). Dodatkowo jestem za podejściem "Radial encapsulation" a u Ciebie wszystkie klasy są publiczne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1