Bonjour, nouveau venu sur ce forum, je me présente : Je suis développeur Turbo Pascal 3 ... Heu excusez moi, depuis je suis en Delphi 10.2 ! Bref, ça fait un moment que je pratique.
Je ne suis pas du tout un spécialiste WEB et j'ai a travailler avec un serveur de client qui utilise un serveur API REST.
Tout se passe très bien, j'ai utilisé Postman pour vérifier les méthodes de com et pas de problèmes insolubles.
Sauf qu'ils veulent que je fasse un GET en utilisant un "body" en JSON.
Avec postman pas de problème mais avec le TRESTREQUEST de delphi, Je n'y arrivais pas du tout sans comprendre la raison :
En fait, il est écrit en toute lettre dans la doc :
"Body Parameters :"
"These parameters consist only of a value and are integrated into the body of the request. They cannot be used for HTTP get or HTTP delete requests since they do not have a body."
Bref c'est interdit !
En fouillant dans le code, le body n'est pas traité au moment de l'execute du client avec le commentaire qui va bien.
En effet dans le code même de TCustomRESTRequest.Execute :
Bref
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 case self.Method of TRESTRequestMethod.rmGET, TRESTRequestMethod.rmDELETE: begin /// A GET request come without a body, so all relevant params /// go into to a query-string .. or maybe to rio (should be nicer) DoPrepareQueryString(LParamsList, LURL); end; TRESTRequestMethod.rmPOST, TRESTRequestMethod.rmPUT, TRESTRequestMethod.rmPATCH: begin /// POST, PUT and PATCh requests typically include a body, so all relevant params /// go into a body stream. /// The body stream has to consider the actual content-type (wwwform vs. multipart) /// content.type is only relevant for PUT/POST DoPrepareRequestBody(LParamsList, LBodyStream); FClient.ContentType := FRequestContentType; end;
body interdit pour un GET !
Pourtant avec postman pas de problème !
Je peux faire quoi ? réécrire le client ? Me faire ma version perso ? C'est un peu le marteau pilon pour la mouche !
Il y a peut être une autre bibliothèque qui gère ça ?
Vous avez une idée ?
Merci pour votre aide !
Partager