Wpis z mikrobloga

Tworzę proste rest api w #go. Do uwierzytelniania używam jwt i chcę zrobić, aby zalogowany użytkownik mógł np. zaobserwować wybrany post. Tutaj pojawia się problem, nie do końca wiem jak to zrobić. Myślałem nad tym, żeby dać taki route /api/post/{id}/{user}/follow, ale wydaje mi się, że to jest źle. Ma ktoś jakiś pomysł, jak to mogę zrobić ?

#golang #programowanie
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@xa0s: jeśli dobrze Cię rozumiem, to najlepiej byłoby z Twojego route'a usunąć fragment {user}. Zauważ, że nie potrzebujesz go, bo id usera wyciągniesz z JWT (zakładam, że szyfrujesz id usera w tokenie).
  • Odpowiedz
@xa0s: Używając semantyki RESTowatej operujesz na zasobach. Jak ktoś obserwuje jakiś post to pomiędzy nim a postem jest tworzona subskrypcja - właśnie coś takiego powinieneś pewnie stworzyć.
  • Odpowiedz
@nilphilus: błędem nie jest umieszczenie w ścieżce stałego fragmentu "users". Ten fragment w ścieżce wskazuje jedynie, że odnosimy się do zasobów, które są podzasobami użytkowników. Błędem jest umieszczanie w ścieżce id usera, ponieważ mamy to id w tokenie. Jeśli dodatkowo umieścimy je w ścieżce to musimy wykonać dodatkowe (redundantne) sprawdzenie czy user zautoryzowany tokenem nie próbuje zmienić nie swoich zasobów przez podanie id innego usera w ścieżce.
  • Odpowiedz
@xa0s: Zasobem jest subskrypcja, więc jej dodanie to do wyboru:
a) uri: POST: /users/{userId}/subscriptions + payload: {"postId": "xxx"}
b) uri: POST: /posts/{postId}/subscriptions + payload: {"userId": "xxx"}
c) olać REST i zastosować inną konwencję.

Dla (a) może być potrzebny podzbiór /posts albo zbór /post-subscriptions jeśli przewidujesz
  • Odpowiedz
Dzięki wszystkim za pomoc, poszedłem za waszymi radami i wyciągnąłem id z JWT. Jeszcze raz dzięki !
  • Odpowiedz