¿Cuál es el formato de marca de tiempo recomendado para una API REST GET como esta?
http://api.example.com/start_date/{timestamp}
Creo que el formato de fecha real debería ser el formato ISO 8601, como la YYYY-MM-DDThh:mm:ssZ
hora UTC.
¿Deberíamos utilizar la versión ISO 8601 sin guiones ni dos puntos, como:
http://api.example.com/start_date/YYYYMMDDThhmmssZ
¿O deberíamos codificar el formato ISO 8601, usando, por ejemplo, codificación base64?
Respuestas:
REST no tiene un formato de fecha recomendado. Realmente se reduce a lo que funciona mejor para su usuario final y su sistema. Personalmente, me gustaría ceñirme a un estándar como el que tiene para ISO 8601 (codificado en URL).
Si no teniendo fea URI es una preocupación (por ejemplo, sin incluir la versión codificada de la URL
:
,-
,en la que URI) y la capacidad de direccionamiento (humana) no es tan importante, también se puede considerar el tiempo época (por ejemplo
http://example.com/start/1331162374
). La URL se ve un poco más limpia, pero ciertamente pierde legibilidad.El
/2012/03/07
es otro formato que se ve mucho. Supongo que podrías ampliar eso. Si sigue esta ruta, asegúrese de estar siempre en la hora GMT (y deje eso claro en su documentación) o también puede incluir algún tipo de indicador de zona horaria.En última instancia, se reduce a lo que funciona para su API y su usuario final. Tu API debería funcionar para ti, no para ti ;-).
fuente
http://api.example.com/start_date/YYYYMMDDThhmmssZ
) que es buena para la legibilidad y las URL limpias.Consulte este artículo para conocer las 5 leyes de fechas y horarios de API AQUÍ :
Más información en los documentos.
fuente
2017-11-20T11%3A00%3A00Z
que no es muy legible. Además (específico de IIS) parece ser muy paranoico acerca de los dos puntos en las URL, incluso si están codificadas.RFC6690 - Formato de enlace de entornos RESTful restringidos (CoRE) No indica explícitamente qué formato de fecha debería ser, sin embargo, en la sección 2. Formato de enlace apunta a RFC 3986. Esto implica que se debe utilizar la recomendación para el tipo de fecha en RFC 3986 .
Básicamente, RFC 3339 Date and Time en Internet es el documento que hay que mirar que dice:
a qué se reduce esto: AAAA-MM-ddTHH: mm: ss.ss ± hh: mm
(por ejemplo, 1937-01-01T12: 00: 27.87 + 00: 20)
Es la apuesta más segura.
fuente
Cada campo de fecha y hora de entrada / salida debe estar en formato UNIX / epoch . Esto evita la confusión entre desarrolladores en diferentes lados de la API.
Pros:
Contras:
Notas:
fuente
Utilice siempre UTC:
Por ejemplo, tengo un componente de programación que toma un parámetro DATETIME. Cuando llamo a esto usando un verbo GET, uso el siguiente formato donde mi nombre de parámetro entrante es scheduleDate.
Ejemplo:
https: // localhost / api / getScheduleForDate? ScheduleDate = 2003-11-21T01: 11: 11Z
fuente