Mam JSON REST API. Po uścisku dłoni otrzymasz token ważny przez 15 minut. Wszystkie połączenia, które wykonasz w ciągu tych 15 minut, powinny działać poprawnie. Po 15 minutach zwracam obiekt błędu (zawiera kod, wiadomość, sukces = fałsz), ale zastanawiałem się również, jaki kod błędu HTTP powinienem zwrócić? I czy używanie kodu błędu HTTP zepsuje niektórych klientów? (HTML5, iPhone, Android). Co jest uważane za najlepszą praktykę w tym scenariuszu?
web-services
rest
api-design
BuddyJoe
źródło
źródło
Odpowiedzi:
Powinieneś zwrócić
401 Unauthorized
kod stanu. Możesz dodatkowo udostępnić hipermedia, aby ponownie ustanowić tokenPomyśl o tym, co dzieje się w aplikacji internetowej. Idziesz powiedzieć, że witryna bankowa. W przypadku braku autoryzacji przekieruje Cię do strony logowania. Następnie logujesz się i jesteś gotowy na jakiś czas. Następnie wygasa i cykl się powtarza.
Tylko myśl.
źródło
zgodnie ze specyfikacją rfc6750 - „The OAuth 2.0 Authorization Framework: Bearer Token Usage”, https://tools.ietf.org/html/rfc6750 , str.8, sekcja 3.1, serwer zasobów powinien zwrócić 401:>
źródło
FWIW Facebook używa 400 z niestandardową odpowiedzią JSON. Osobiście wolałbym 401 z niestandardową odpowiedzią JSON.
Oto treść odpowiedzi FB:
{ "error": { "message": "Error validating access token: Session has expired on Jul 17, 2014 9:00am. The current time is Jul 17, 2014 9:07am.", "type": "OAuthException", "code": 190, "error_subcode": 463 } }
źródło