Formato de fecha recomendado para REST GET API


Cuál es el formato de marca de tiempo recomendado para una API GET REST como esta:

http://api.example.com/start_date/{timestamp}

Creo que el formato de fecha real debe ser el formato ISO 8601, como YYYY-MM-DDThh:mm:ssZ para la hora UTC.

Debemos usar la versión ISO 8601 sin guiones y dos puntos, como:

http://api.example.com/start_date/YYYYMMDDThhmmssZ

¿O deberíamos codificar el formato ISO 8601, usando por ejemplo la codificación base64?

Author: Lorenzo Polidori, 2012-03-06

3 answers

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 atenerme a un estándar como el que tiene para ISO 8601 (codificado en url).

Si no tener URI feo es una preocupación (por ejemplo, no incluir la versión codificada url de :, -, in you URI) and (human) addressability is not as important, you could also consider epoch time (e.g. http://example.com/start/1331162374). La URL se ve un poco más limpia, pero ciertamente pierdes legibilidad.

El /2012/03/07 es otro formato que ves mucho. Supongo que podrías ampliar eso. Si vas por esta ruta, solo asegúrate de estar siempre en la hora GMT (y deja eso claro en tu documentación) o es posible que también quieras 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 ;-).

 47
Author: nategood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-15 13:10:08

Revise este artículo para las 5 leyes de fechas y horas de API AQUÍ :

  • Ley # 1: Use ISO-8601 para sus fechas
  • Ley # 2: Aceptar cualquier zona horaria
  • Ley # 3: Guárdelo en UTC
  • Ley # 4: Devolverlo en UTC
  • Ley # 5: No uses el tiempo si no lo necesitas

Más información en los documentos.

 47
Author: mohamed-ibrahim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-05 12:52:21

RFC6690-Constrained RESTful Environments (CoRE) Link Format No indica explícitamente qué formato de fecha debe ser, sin embargo, en sección 2. Link Format apunta a RFC 3986. Esto implica que debe utilizarse la recomendación para el tipo de fecha en RFC 3986.

Básicamente RFC 3339 Fecha y Hora en Internet es el documento a mirar que dice:

Formato de fecha y hora para su uso en protocolos de Internet que es un perfil de la Norma ISO 8601 para la representación de fechas y tiempos usando el calendario gregoriano.

A qué se reduce esto : AAAA-MM-DDThh:mm:ss.ss±hh: mm

(p. ej. 1937-01-01T12:00:27.87+00:20)

Es la apuesta más segura.

 9
Author: Matas Vaitkevicius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-19 16:12:53