Quel est le format d'horodatage recommandé pour une API REST GET comme celle-ci:
http://api.example.com/start_date/{timestamp}
Je pense que le format de date réel devrait être le format ISO 8601, comme YYYY-MM-DDThh:mm:ssZ
pour l'heure UTC.
Devrions-nous utiliser la version ISO 8601 sans tirets ni deux-points, tels que:
http://api.example.com/start_date/YYYYMMDDThhmmssZ
ou devrions-nous encoder le format ISO 8601, en utilisant par exemple l'encodage base64?
Réponses:
REST n'a pas de format de date recommandé. Cela se résume vraiment à ce qui fonctionne le mieux pour votre utilisateur final et votre système. Personnellement, je voudrais m'en tenir à une norme comme celle que vous avez pour ISO 8601 (encodée en url).
Si ne pas avoir URI laid est une préoccupation (par exemple , ne comprenant pas l'URL de la version codée
:
,-
,en vous URI) et (humain) est adressabilité pas aussi important, vous pouvez aussi considérer le temps d'époque (par exemple
http://example.com/start/1331162374
). L'URL semble un peu plus propre, mais vous perdez certainement la lisibilité.C'est
/2012/03/07
un autre format que vous voyez beaucoup. Vous pourriez développer cela, je suppose. Si vous suivez cette voie, assurez-vous simplement que vous êtes toujours à l'heure GMT (et indiquez-le clairement dans votre documentation) ou vous voudrez peut-être également inclure une sorte d'indicateur de fuseau horaire.En fin de compte, cela se résume à ce qui fonctionne pour votre API et votre utilisateur final. Votre API devrait fonctionner pour vous, pas pour vous ;-).
la source
http://api.example.com/start_date/YYYYMMDDThhmmssZ
) qui est bonne pour la lisibilité et les URL propres.Consultez cet article pour les 5 lois des dates et heures API ICI :
Plus d'informations dans la documentation.
la source
2017-11-20T11%3A00%3A00Z
n'est tout simplement pas très lisible. De plus (spécifique à IIS), il semble être très paranoïaque à propos des deux-points dans les URL, même s'ils sont encodés.RFC6690 - Format de lien des environnements RESTful contraints (CoRE) N'indique pas explicitement quel format de date devrait être cependant dans la section 2. Format de lien il pointe vers RFC 3986. Cela implique que la recommandation pour le type de date dans la RFC 3986 doit être utilisée.
Fondamentalement, RFC 3339 Date et heure sur Internet est le document à consulter qui dit:
ce que cela se résume à: AAAA-MM-jjTHH: mm: ss.ss ± hh: mm
(par exemple 1937-01-01T12: 00: 27.87 + 00: 20)
Est le pari le plus sûr.
la source
Chaque champ datetime en entrée / sortie doit être au format UNIX / epoch . Cela évite la confusion entre les développeurs de différents côtés de l'API.
Avantages:
Les inconvénients:
Remarques:
la source
Utilisez toujours UTC:
Par exemple, j'ai un composant de planification qui prend en un paramètre DATETIME. Lorsque j'appelle cela à l'aide d'un verbe GET, j'utilise le format suivant où mon nom de paramètre entrant est scheduleDate.
Exemple:
https: // localhost / api / getScheduleForDate? ScheduleDate = 2003-11-21T01: 11: 11Z
la source