J'utilise Slim v3 et the json schema validator by justinrainbow pour mon API. Ce que je veux faire et je ne peux tout simplement pas me rendre au travail est:Slim - modifier le corps de la requête POST dans le middleware
- dans le middleware: valider json entrant avec les valeurs par défaut. cela produit un objet modifié
- écrire l'objet modifié dans la demande, de sorte qu'il peut être traité par les contrôleurs de base
Ce que je manquerais à est:
# inside middleware:
$requestbody = $request->getBody();
$requestobject = json_decode($requestbody);
# validation and modification of $requestobject takes place here
$request->getBody()->write(json_encode($requestobject));
$request->reparseBody();
return $next($request, $response);
De ce point Sur, le corps de la demande est juste null
. Qu'est-ce que je fais mal? Je suis plutôt certain qu'il y a quelque chose qui ne va pas dans la façon dont je modifie les objets Slim, parce que ça ne marche pas quand j'essaye aussi manuellement $request->getBody()->write('{"some": "content"}')
.
Remplacer le corps de la requête par les nouvelles données est exactement ce que je dois faire. Problème: Il ne fait pas cela, il définit simplement le corps à 'null' – tscherg
Ainsi, vous pouvez utiliser withAttribute pour envoyer des paramètres –
Cela n'a pas fonctionné du tout; La définition des attributs ne semble pas modifier le corps de la requête – tscherg