Je suis actuellement en train de développer un REST API
dans laquelle je dois retourner un 102 HTTP status code
(traitement) pendant que je génère une exportation.
Flux de travail :
- POST /exports
- retourner 201 avec les données
- GET /exports/id
- retourne 102 avec les données si l'exportation est en cours de traitement
- retourne 200 avec les données si l'exportation est terminée
Lorsque j'essaie de récupérer les données d'exportation en cours de traitement, il n'y a pas d'en-tête de réponse : les en-têtes de réponse sont absents avec le code d'état HTTP 102. Si je modifie le code d'état avec 2xx par exemple, cela fonctionne bien. Je n'arrive pas à comprendre. Y a-t-il quelque chose de spécifique avec le code d'état HTTP 102 ? Quand je dis que les en-têtes de réponse sont manquantes, je veux dire : Chrome > Developer tools > Network Tab > Click on request > Headers tab > Only showing "General" and "Request Headers" (same with FF & Postman)
.
Technologies utilisées :
- Ubuntu 18.04 LTS
- PHP 7.2 (dernière version)
- laravel/lumen 5.6.21
- Apache 2.4.29
Code du contrôleur :
/**
* Return export by id
*
* @param int $id
* @return \Illuminate\Http\JsonResponse
*
* @throws AuthorizationException
* @throws ModelNotFoundException
*/
public function getItem(int $id)
{
if($export = Export::find($id))
{
$this->authorize(__FUNCTION__, $export);
if($export->status != Export::STATUS_COMPLETED)
{
return response()->json($export, 102);
}
return response()->json($export);
}
throw new ModelNotFoundException();
}
En-têtes de requête attendus :
- Contrôle d'accès - Autoriser l'origine
- Cache-Control
- Connexion
- Content-Length
- Content-Type
- Date
- Connexion par proxy
- Serveur
- Varier
EDIT
J'aurais dû mentionner que cela fonctionnait sur ma configuration précédente :
- Ubuntu 17.10 LTS
- PHP 7.1 (dernière version)
- laravel/lumen 5.6.16
- Apache 2.4.27
Je n'ai pas trouvé dans les notes de version ce qui aurait pu avoir un impact sur la réponse à la demande.