2017-04-01 24 views
5

W interfejsie REST, jaki jest najskuteczniejszy sposób obsługi danych specyficznych dla użytkownika dla przedmiotów?Dane użytkownika dla pozycji w REST api

Na przykład, powiedzmy, że istnieją zasoby, które można faworyzować. Lista pozycji można uzyskać poprzez:

https://myservice.com/api/items (Full list) 
https://myservice.com/api/items/{id} (Single item) 

która zwraca

{ 
    { 'name': 'name 1' }, 
    { 'name': 'name 2' }, 
} 

Każdy element można favourited przez użytkownika (https://myservice.com/api/user/{id}) oraz listę tych ulubionych byłyby dostępne pod adresem:

https://myservice.com/api/user/{id}/favorites 

Cała konfiguracja jest bezpaństwowa; jednak mogą istnieć setki ulubionych i pobieranie pełnej listy może nie być potrzebne.

Pytanie: Czy przy utrzymywaniu systemu bezstanowego najlepiej jest połączyć uzyskanie elementu z danymi użytkownika?

tzn Czy to rozsądne, ani prawdopodobne, aby uzyskać listę użytkowników specyficznych elementów:

https://myservice.com/api/items?user={id} 
{ 
    { 'name': 'name 1', 'isFavourite':true }, 
    { 'name': 'name 2', 'isFavourite':false }, 
} 

Odpowiedz

0

Utrzymując system bezpaństwowcem, co jest najlepszym sposobem, aby połączyć się element z użytkownikiem konkretnego dane?

Pomyśl o tym, jak można to zrobić na stronie internetowej. Tak to robisz w trybie REST; po prostu musisz uczynić go odczytywalnym maszynowo.

Cała konfiguracja jest bezpaństwowa; jednak mogą istnieć setki ulubionych i pobieranie pełnej listy może nie być potrzebne.

W takim przypadku, można rozpowszechniać listę w wielu zasobów, a następnie użyj paging aby pomóc konsumentom w znalezieniu zasobu, która zwraca następnej/poprzedniej strony listy.

Czy to rozsądne, ani prawdopodobne, aby uzyskać listę użytkowników specyficznych elementów

Tak, oczywiście. Kluczową ideą do rozpoznania jest to, że Twój REST API jest częścią twojej domeny integracyjnej; you udawać, że jesteś witryny pełnej "stron internetowych" i przetłumaczyć manipulacji zasobów internetowych na działania/zapytania w aplikacji.