Encabezado de respuesta HTTP para un ID de solicitud único para el servicio REST

8

Para nuestro servicio REST, deseo devolver una ID de solicitud única con cada respuesta; útil para la depuración de proyectos internos, pero también para ofrecer soporte a terceros que podrían usar el servicio en el futuro.

Decidí que necesito usar un encabezado de respuesta, ya que no todas las solicitudes REST tienen que dar como resultado un cuerpo de respuesta (a menudo las API REST de nivel inferior aprovechan únicamente el código de estado y la descripción), pero todavía tendrían que enviar devuelve esta ID de solicitud.

Quiero asegurarme, si es posible, que uso un Encabezado de respuesta HTTP que es improbable para ser eliminado por cualquier proxy a lo largo del camino.

Esto podría ser muy importante ya que una gran cantidad de clientes probablemente serán dispositivos móviles con lo que seguramente serán topologías de red "interesantes" entre ellos y nuestros servidores.

Sin embargo, es probable que los mismos servicios se comercialicen a otras empresas con sus propios firewalls / proxies corporativos.

Debido a esto, básicamente he rechazado la idea de utilizar un encabezado de respuesta personalizado en lugar de un encabezado conocido.

Mi encabezado conocido actual ganador sería el encabezado ETag , pero aunque es correcto casi , no es del todo porque un ETag es para un recurso, no una solicitud (es decir, dos solicitudes separadas para el mismo recurso devolverán legítimamente el mismo ETag ). Además, si uso eso, significará que no puedo hacer ningún etiquetado de entidad para otra cosa.

¿Alguien tiene mejores ideas?

Update

Parece que el encabezado de Pragma podría usarse, pero tengo problemas para escribirlo dentro de la WebAPI de Asp.Net. Aquí hay una pregunta relacionada sobre SO .

    
pregunta Andras Zoltan 25.07.2012 - 17:43

2 respuestas

4

Yo usaría un cuerpo estandarizado y no usaría el encabezado. Por ejemplo, cada cuerpo puede ser JSON e incluir un campo de ID. Siempre que esté estandarizado en su plataforma, se garantiza que funcione.

No usaría un encabezado personalizado debido al riesgo de que se elimine. No usaría un encabezado estándar porque no conozco uno que se ajuste perfectamente (por ejemplo, la etiqueta que mencionas se usa para determinar los cambios de archivos y las claves de almacenamiento en caché).

    
respondido por el Matt S 25.07.2012 - 19:58
0

Eche un vistazo a las pautas del equipo de Heroku. Entre otras cosas, como Etags, sugieren un Id. De solicitud en el encabezado. Estamos buscando implementar la mayoría de estas directrices donde tengan sentido.

  

Rastrear solicitudes con Id. de solicitud

     

Incluya un encabezado de Id. de solicitud en cada respuesta API, rellenado con un   Valor UUID. Si tanto el servidor como el cliente registran estos valores, será   útil para rastrear y depurar solicitudes.

enlace

    
respondido por el Bronumski 12.12.2014 - 15:57

Lea otras preguntas en las etiquetas