Wpis z mikrobloga

Mirasy, chciałbym zwracać zdjęcie wraz z innymi danymi w postaci json, czy jest to głupi pomysł i lepiej zrobić to w ten sposób, że będę miał dwa endpointy.
np.
/user/1/books/2 -> zwraca informacje dotyczące książki.
/owner/1/cars/2/cover -> zwraca okładkę książki.

W tym przypadku może się zdarzyć, że aby uzyskać wszystkie potrzebne informacje będzie trzeba wykonać dwa requesty. Minusem pierwszego rozwiązania jest (cover + dane) rozmiar jsona. Poza tym, myślałem nad tym, aby dać użytkownikowi API możliwość zdecydowania czy chce z coverem czy bez covera (to wydaje mi się dobrym rozwiązaniem).

#naukaprogramowania #programowanie #csharp
  • 20
@GaHee: nie wiem, imo rest zwraca zasób, czyli raczej cały obiekt, rozmiar jsona nie jest żadnym problemem, teraz doczytałem że to zdjęcie też jest, czyli jak kolega wyżej napisał

i dwa co się rzuca w oczy /books /cars, dalej parametr - ja po takim zapytaniu spodziewam się posta lub listy, jak już wołasz o jeden zasób to użyj /book /car
@Nicescroll: @kaervek: To o czym mówił @Nicescroll nazywa się data shapping. @IrvinTalvanen: Okej, rozumiem, że najlepszym rozwiązaniem byłoby dołączanie urla, ale ogranicza mnie google cloud storage. Zdjęcia te muszą być prywatne, więc zrobienie ich publicznymi i dołączanie linku do odpowiedzi nie jest dobrym rozwiązaniem.
@GaHee: to po prostu select. Zwracanie w jednym zasobie danych o okładce i danych binarnych to moim zdaniem nienajlepszy pomysł bo sprowadza się do tego że musisz ten obrazek i tak sprowadzić do danych tekstowych, co jest czasochłonne i nieoptymalne (bo zwiększa się rozmiar obrazka). Tymi dodatkowym requestem się nie przejmuj ;)

Ogólnie to polecam przyjrzeć się API serwisu imgur.com, mają bardzo dobre API i świetną dokumentację. Można podpatrzeć jak oni
@Nicescroll: Dobra, pewnie nie jasno się wyraziłem. Mamy prywatny bucket, gdzie każdy user ma swój "folder", w którym są jego książki. Dotychczas myślałem, że aby mieć możliwość dostarczania linków do tego, trzeba dany zasób zrobić publicznym (czyli każdy ma do niego dostęp), a to chyba naruszałoby bezpieczeństwo, a covery faktycznie lepiej również będzie trzymać w bucketcie przy książkach (póki co to tablica byteów w bazie).
@GaHee zrób druga bazę tabele tylko z linkami do coverów twórz covery na zasadzie odpytania bazy, baza zwraca zdjęcie link do niego a ty pobierasz je w base64 tworzysz nowego bloba wydajność niniejsza lecz Redis nieco odciąży sprawę.
@Nicescroll: Nie miałem do czynienia jeszcze z tym narzędziem. Jestem newbe, więc póki co pójdę raczej w stronę wybierania pól jakie mają być zwrócone, jeżeli ktoś wybierze, że chce cover, to go dostanie.
@GaHee jeżeli do wrzucania plików używasz jakiegoś Api to dostajesz na pewno adres zasobu po uploadzie, zapisz go wtedy do bazy. A w samym google Storage ustaw tylko Twój serwer jako ten który może pobierać dane