Jaki jest zalecany format sygnatury czasowej dla REST GET API, taki jak ten:
http://api.example.com/start_date/{timestamp}
Myślę, że rzeczywisty format daty powinien być formatem ISO 8601, na przykład YYYY-MM-DDThh:mm:ssZ
dla czasu UTC.
Czy powinniśmy używać wersji ISO 8601 bez myślników i dwukropków, na przykład:
http://api.example.com/start_date/YYYYMMDDThhmmssZ
czy też powinniśmy zakodować format ISO 8601, używając na przykład kodowania base64?
Odpowiedzi:
REST nie ma zalecanego formatu daty. Naprawdę sprowadza się to do tego, co działa najlepiej dla użytkownika końcowego i systemu. Osobiście chciałbym trzymać się standardu, takiego jak masz dla ISO 8601 (zakodowany adres URL).
Jeśli nie mają brzydki URI jest problemem (np nie licząc url zakodowanej wersji
:
,-
,w was URI) i (ludzka) Adresowalność nie jest tak ważne, można również wziąć pod uwagę czas epoki (np
http://example.com/start/1331162374
). Adres URL wygląda trochę bardziej czytelnie, ale z pewnością tracisz czytelność.To
/2012/03/07
kolejny format, który często widzisz. Przypuszczam, że można by to rozwinąć. Jeśli wybierzesz tę trasę, po prostu upewnij się, że jesteś zawsze w czasie GMT (i wyjaśnij to w dokumentacji) lub możesz również chcieć uwzględnić jakiś wskaźnik strefy czasowej.Ostatecznie sprowadza się to do tego, co działa dla twojego API i twojego użytkownika końcowego. Twoje API powinno działać dla Ciebie, a nie dla Ciebie ;-).
źródło
http://api.example.com/start_date/YYYYMMDDThhmmssZ
), Która jest dobra dla czytelności i czystych adresów URL.Przeczytaj ten artykuł, aby poznać 5 praw dotyczących dat i godzin API TUTAJ :
Więcej informacji w dokumentacji.
źródło
2017-11-20T11%3A00%3A00Z
jest po prostu mało czytelny. Ponadto (specyficzne dla IIS) wydaje się, że dwukropki w adresach URL są bardzo paranoiczne, nawet jeśli są one zakodowane.RFC6690 - Format łącza ograniczonych środowisk RESTful (CoRE) Nie określa wyraźnie, jaki powinien być format daty, jednak w sekcji 2. Format łącza wskazuje na RFC 3986. Oznacza to, że należy stosować zalecenie dotyczące typu daty w dokumencie RFC 3986 .
Zasadniczo RFC 3339 Data i godzina w Internecie to dokument, któremu należy się przyjrzeć, który mówi:
do czego to się sprowadza: RRRR-MM-ddTHH: mm: ss.ss ± gg: mm
(np. 1937-01-01T12: 00: 27.87 + 00: 20)
To najbezpieczniejszy zakład.
źródło
Każde pole typu data i godzina w wejściu / wyjściu musi mieć format UNIX / epoch . Pozwala to uniknąć zamieszania między programistami z różnych stron interfejsu API.
Plusy:
Cons:
Uwagi:
źródło
Zawsze używaj UTC:
Na przykład mam komponent harmonogramu, który przyjmuje jeden parametr DATETIME. Kiedy wywołuję to przy użyciu czasownika GET, używam następującego formatu, w którym nazwa parametru przychodzącego to scheduleDate.
Przykład:
https: // localhost / api / getScheduleForDate? ScheduleDate = 2003-11-21T01: 11: 11Z
źródło