Pracuję nad zestawem usług internetowych dla klienta mobilnego, a wymagania wymagają, aby unikalny identyfikator urządzenia był dołączany do wszystkich żądań, aby był przechowywany w niektórych żądaniach i używany do filtrowania wyników w innych.
Zasugerowano, aby umieścić go w niestandardowym nagłówku HTTP, ponieważ będzie on dołączany do wszystkich żądań, więc zacząłem zastanawiać się, jakie kryteria można zastosować, aby ustalić, czy dany fragment danych należy do nagłówka, czy wraz z innymi danymi w ciało żądania.
Czy są jakieś takie kryteria?
http
http-request
Mike Partridge
źródło
źródło
Odpowiedzi:
Kiedy informacja jest ważna, powinieneś umieścić ją w ciele.
Dlaczego?
źródło
Chociaż linia jest nieco rozmyta, dla mnie ogólna zasada brzmi: dane, na których działa logika biznesowa, powinny znajdować się w ciele, metadane mogą / powinny być umieszczone w nagłówkach.
Innym sposobem patrzenia na to jest: dane, które pojawiają się tylko w określonych rodzajach żądań, powinny znajdować się w ciele, podczas gdy dane, które są przetwarzane konsekwentnie w całej aplikacji, powinny znajdować się w nagłówkach.
Jeszcze inny punkt widzenia: czy możesz sobie wyobrazić, że część danych jest przetwarzana globalnie, np. Przez router / zaporę ogniową, a nie przez twoją aplikację? Jeśli tak, to prawdopodobnie powinien on znajdować się w nagłówkach, a nie w treści.
Oto niektóre przykłady zastosowania tych reguł:
Wracając do pytania dotyczącego unikalnego identyfikatora urządzenia: jeśli jest używane wszędzie w spójny sposób, np. Tylko do logowania, można je umieścić w nagłówkach. Ale jeśli jest używany do filtrowania żądań na różne sposoby w zależności od punktu końcowego, lepiej byłoby w ciele. Oczywiście, jeśli masz oba przypadki użycia, prawdopodobnie lepiej jest trzymać się tylko jednego sposobu przekazywania (prawdopodobnie nagłówków), niż zmuszać użytkownika interfejsu API do umieszczania tych samych danych w dwóch miejscach, co daje dylemat: niespójne dane wejściowe lub wdrożenie pewnego rodzaju walidacji.
źródło
Treść żądania klienta; które nie zostaną zmienione w ramach wielu żądań do tego samego serwera, będą częścią HEADER, np. poświadczenia, inne, które są często zmianami na żądanie, będą częścią BODY.
LUB
właściwość treści wiadomości / treści przejdzie do nagłówka. np. typ kodowania, długość treści, typ zawartości.
I
W twoim przypadku należy dodać parametry filtru jako parametry zapytania / żądania w adresie URL.
/mobiles?type=MOTO&colour=black
W usługach restful sam adres URL będzie odnosił się do obiektu
/conferences/{conference_id}
-> odnosi się do konkretnej konferencjiźródło