Pytanie odnośnie REST API - nie wiem czy dobrze rozumiem
(moje REST API pisze w django rest frameworku)

Mam taka aplikacje gdzie model w basie danych ma relacje z częsciami samochodowymi ( wszystkie czesći muszą być powiązane tylko z jednym samochodem - to tylko przykład)
mam takie endpointy:

GET POST samochody/ - lista samochodów , mozliwośc stworzenia nowego;
GET PUT DELETE samochody// - opis samochodu , oraz wpięte do odnośnika 'cześci samochodowe",
Jakie stacki polecicie na początek do nauki kodowania restful/crud aplikacji?
atutem będzie, jeżeli będzie dużo materiałów na temat danego stacka (najlepiej video-tutoriale na windowsie)
dodam, że jestem praktycznie zielony w temacie stronek restful, a bardzo chciałbym się tego porządnie nauczyć.
A więc od czego zacząć?
Chciałbym skończyć na czymś w stylu MERN/MEAN/MEVN, ale póki co wydaje mi się to zbyt trudne do ogarnięcia bez porządnych materiałów.
#programista #nodejs #react #rest #restful #
Hej mireczki, mógłby mi ktoś wytłumaczyć parę kwestii? Dlaczego HTTP Get nie powinien mieć ciała, a może przesyłać dane np. w URLce (stringi typu id, email itp.)? W jaki sposób rozwiązać problem kiedy chcę pobierać z API np. Userów bazując na mniej czy bardziej złożonych kryteriach, które najprościej byłoby wrzucić do jakiegoś innego obiektu (np. SearchCriteria) i posłać do api jako body? Ale jednocześnie robiąc to wszystko po Bożemu ze specyfikacją HTTP/REST?
@FaenTaDeg:

Be careful!!! GET method must be IDEMPOTENT, and must be "cacheable". If you send information in the body How can the system cache your request? HTTP allows caching GET request using only the URL, not the request body. For instance, this two requests: example.com { test:"some" } example.com { anotherTest:"some2" } are considered the same by the cache system: Both of them have exactly the same URL

https://stackoverflow.com/questions/5020704/how-to-design-restful-search-filtering#comment45639456_5020704

chyba chodzi
  • Odpowiedz
@FaenTaDeg: Chodzi o standardową implementację, w której przyjęło się że serwer obsługujący metodę GET nie przetwarza payloadu (chociaż mógłbyś go wysłać). Standardem przy większych zapytaniach jest używanie metody POST z payloadem w którym definiujesz SearchCriteria. To nie jest tak że każdy "POST" musi coś tworzyć; nie warto się trzymać sztywno tej reguły (można to zdefiniować na poziomie endpoint '/Search'). Poza tym jak świat długi i szerogi, znalezienie dobrego REST service gdzie
  • Odpowiedz
Witam wykopowych #programista15k

Pisałem ostatnio zadanko, które polegało na napisaniu usługi z interfejsem REST/HTTP, która umożliwi aktualizowanie wartości czujników i zwracanie wadliwych silników.

Serwer miał pobrać dane wejściowe zawierające listę czujników do silników z pliku w formacie YAML na GitHubie.

HTTP GET
Miał zwracać jako JSON listę silników, gdzie ciśnienie na czujniku spadło poniżej podanego poziomu i jednocześnie temperatura na co najmniej jednym czujniku wzrosła powyżej podanej wartości

HTTP POST
Miał zaktualizować
Danger40 - Witam wykopowych #programista15k 

Pisałem ostatnio zadanko, które poleg...

źródło: comment_TUrW7xtZEgihOQAX2v14H2ZDOETrjIdF.jpg

Pobierz
@Danger40: tak na pierwszy rzut oka:
1. Package: weź je jakoś sensownie ponazywaj
2. pressure_threshold camelCase
3. Ta metoda getBrokenEngines do przepisania (rozbić na mniejsze, w logikę się za bardzo nie zagłębiałem, ale wydaje się że da rade to zrobić lepiej)
4. Do różnych typów sensora zrób sobie enuma a nie po Stringu sprawdzasz typ.
5. IEngineService -> EngineService, EngineService -> EngineServiceImpl
6. if (brokenEngines.isEmpty()) imo niepotrzebne, po prostu zwroc pusta
  • Odpowiedz
@Danger40:
- W Javie nie stosuje się konwencji nazewnictwa I przed interfejsem, jest to używane w C# ale raczej nie jest to mile widziane w Javie
- Wybór technologii dość osobliwy ale tutaj nie chcę się za bardzo czepiać ale fajnie używa się spring-boota, który zrobi Ci fatJara, którego z kolei możesz odpalić samym java -jar. Tylko, że tutaj wchodzi spring.
- Nie rób taki rzeczy e.printStackTrace();, do takich rzeczy
  • Odpowiedz
Jeżeli User posiada listę itemów które tylko on powinien móc wyświetlić, to jak to w REST lepiej zrobić?

Pierwsze rozwiązanie:
/users/{username}/items - i razem z requestem wysyłać coś, co pozwoli na potwierdzenie praw dostępu

Drugie rozwiązanie:
/items - i z requestem wysyłać dane, które pozwalają równocześnie stwierdzić o którego Usera chodzi oraz potwierdzić jego uprawnienia

Które rozwiązanie jest bardziej RESTowe? Bo sobie na papierze po raz pierwszy rozpisuję endpointy i się zastanawiam
@Wrath_of_the_Tyrant: pierwsze jeśli przedmioty są "wewnątrz" użytkownika np. przedmioty w ekwipunku postaci w grze
drugi jeśli jest to unikatowy podzbiór wszystkich przedmiotów dostępny dla tego użytkownika np: lista promocyjnych ofert produktów generowana na podstawie historii zakupów/ustawień

Ale generalnie dużo zależy od tego jak te dane mają być używane. Np. przekazywanie id usera w tokenie sesyjnym jest problematyczne jeśli do tych samych informacji powinien mieć np. admin - skąd wtedy wziąć informacje
  • Odpowiedz
@Wrath_of_the_Tyrant: Wele osób stosuje JWT (w tym ja dla kilku projeketów) ale efektywnie przeimplementujesz to co dobre implementacje ciasteczek już oferują, więc jakby zależy od supportu web frameworku którego używaż. A najlepiej to jest nie trzymać haseł u siebie i użyć jakiegoś OAuth providera.
  • Odpowiedz
@damian44__: najbezpieczniej byłoby zaimplementować tam "prawdziwe" logowanie się, czyli dostęp tylko zautentyfikowanego użytkownika, najwyżej żeby nie musieli za każdym włączeniem wpisywać tego samego niech jakieś ciasteczka/storage/sesja czy co tam jeszcze jest w electronie trzyma to w jakiejś pamięci apikacji, a plus będzie taki że robiąc kopiuj-wklej nikt nie zabierze dostępów ze sobą
  • Odpowiedz
Cześć mirki mam takie pytanko.

Tworzymy w firmie aplikację REST-ową, opartą o C# web api na backendzie oraz angular jako warstwa frontowa.

I zastanawiam się jak powinna wyglądać obsługa wszelkich grafik dołączonych np. do opisu produktu.

Backend i front znajdują się na osobnych serwerach.

Gdzie powinny być umieszczane pliki graficzne? Na serwerze frontowym, a bazie zapisane tylko ścieżki, które później zwracane byłby do klienta?

Czy może serwer powinien zwracać do warstwy frontowej