Parę pytań o RESTful service

0

Znam Java SE w stopniu zadowalającym, napisałem kilka aplikacji na android, aplikacje bazodanową jednowarstwową. Teraz chcę postawić swój webservice REST obsługujący bazę danych i połączyć się do niego z kilku urządzeń: PC i Android. Jako, że najlepiej uczę się na przykładach, postawiłem sobie REST-ful Hello World https://spring.io/guides/gs/rest-service/ i chcę się połączyć aplikacją z Androida, ale przed dalszą nauką dręczy mnie pytanie. Nie rozumiem jednego, jeżeli REST wystawia dane do HTTP, to każde urządzenie będzie miało dostęp do tych samych danych? Np. kierujemy zapytanie z Androida podając ID=9999 klienta.. REST wystawia dane o kliencie i teraz wszystkie urządzenia wchodząc pod link http://(adres_serverisu):8080/klient mają dane do tego klienta bez wysłania żądania do RESTa? A co jeśli w w tym samym momencie z urządzenia android i PC wysłane zostanie żądanie po informacje o kliencie o innym ID? Jestem nowy w temacie webserwisów :). Mógłby mi ktoś łopatologicznie wytłumaczyć?

0

łopatologocznie to jeśli nie zabezpieczysz endpointa to tak, każdy strzał HTTP pod 'localhost:8080/klient' dostanie te same dane.

0

ok. poszczególnych klientów możemy odebrać poprzez http://(adres_serverisu):8080/klient/n-id, a jeżeli chcemy pozyskać listę użytkowników z dwóch urządzeń podając z nich listy z różnymi ID?

0

Ogolnie to dziala tak:
GET na http://localhost:8080/rest/klienci - zwraca liste klientow
POST na http://localhost:8080/rest/klienci z JSON/XML jako post data tworzy nowego klienta. W odpowiedzi powinienes zwrocic 201 (created) oraz header Location: http://localhost:8080/rest/klienci/<id>, gdzie id to cos co pozwala pozniej takiego klienta odnalezc. Duzo osob zwraca dodatkowo jako dane JSON/XML z danymi klenta.
PUT na http://localhost:8080/rest/klienci/id z JSON/XML - update klenta o danym id.
DELETE na http://localhost:8080/rest/klienci/id - usuwa klienta o danym id.

Nie jestem przekonany czy jestes swiadom, ze localhost:8080 dziala ci bo serwer i twoja aplikacja z niego korzystajaca uruchamiane sa na tym samym kompie. Dla klienta androidowego localhost:8080 bedzie sie staral polaczyl z lokalnym serwerem, czyli serwerem na androidzie. Musisz uzyc jakies 'prawdziwe' ip.

0

ok a jak z tą listą, o która pytałem wcześniej? Dzięki za odpowiedzi.

0

Musisz zaimplementowac np. klienci?q=<query> albo jesli ta lista id jest krotka to mozesz np: /klienci?ids=1,2,5,191 itp. Mozliwosci jest wiele, to tylko 2 z nich.

0

Właściwie chodziło mi o to czy przy użyciu REST powinno się przesyłać listę obiektów do stworzenia rekordów w bazie danych, czy powinno się po stronie klienta wywoływać n-razy metodę, która wysyła po jednym obiekcie żądanie pod stosowny URL.

0

REST ma w du!@#pie czy zrobisz to tak czy tak, co innego definiuje jego specyfikacja.

@niezdecydowany a jak ty byś zrobił, gdybyś po stronie klienta miał np 100obiektów i chciał poprzez resta wstawić je do bazy danych? Po prostu chcę się dowiedzieć jak to powinno prawidłowo działać. W googlach nie mogę na to znaleźć odpowiedzi.

I jeszcze jedno, jak przesłać do resta zdjęcie?

0

puściłbym to raz, jako jeden form [w javie to zwyczajnie kolekcja obiektów].

I jeszcze jedno, jak przesłać do resta zdjęcie?

nawet nie próbuj napisać, że nie znalazłeś odpowiedzi w google, bo odpadnie ci noga za takie herezje.

0

Nie mogę znaleźć jakiegoś przykładu połączenia z Android do Restful json service... ktoś może z Was zna jakiś? Albo wiecie jakie kroki dokładnie musze podjąć razem z pierdołami typu pozwolenie w firewall na łączenie się z portem na localhostcie? Przydałby się jakis tutorial step by step :)

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