Page 1 sur 1

PB avec request

Posté : sam. 19 mars 2022 09:51
par estelle_d
Bonjour,

J'ai installé sur mon PI4 une BDD qui était auparavant sur un autre PI
Cela fonctionner avec cette config:
"
ServerPI = 'http://192.168.1.20'
rs = requests.post(ServerPI + "/Rajout_Q_air.php", data = data)

Aujourd'hui, le serveur est local
Donc j'ai remplacé ServerPI = 'http://192.168.1.29'
Cela me retourne l'erreur 500
J'ai essayé : ServerPI = 'localhost' sans succès
Qui a une idée ?

Re: PB avec request

Posté : sam. 19 mars 2022 20:46
par jelopo
Bonjour,

Erreur 500: Internal serveur error.
Est-ce que le serveur est bien démarré sur le port 80 ?
Essayer cette commande pour voir:

Code : Tout sélectionner

 netstat -antp | grep LISTEN
A+

Re: PB avec request

Posté : sam. 19 mars 2022 23:08
par piper
Bonsoir :
HTTP 500 signifie : le serveur est bien démarré et tourne mais la requête l'a fait planter.
En général cela vient du fait que la requête est mal formulée.

En l'occurence ici, en fait, tu as une base de données mais surtout un accès via une API http (base de données et http = 2 choses totalement différentes : le serveur http t'offre ici une couche d'appel : il reçoit ta requête, la transforme en une requête compréhensible par la base de données, l'interroge, récupère la réponse, la transforme et te renvoie une réponse).
Ce type d'accès est bon lorsqu'on ne sait pas accéder directement à la base de données ou lorsqu'on souhaite la "cloisonner" pour des raisons de sécurité ou de confidentialité (non pas pour cacher les données mais pour cacher sa structure au développeur de l'application qui doit accéder aux données)

celui qui doit exécuter rs = requests.post(ServerPI + "/Rajout_Q_air.php", data = data) est celui qui demande les données
ServerPI est celui qui héberge l'API http : dessus doit tourner un service web (apache, lighthttp, nginx ou autre) et php doit y être installé.
Si c'est la "même" machine" alors ServerPI =localhost

Mais rien ne précise que serverPi héberge la base de données, on le saurait en ouvrait les fichiers php

Au passage, quand on fait request.post, il faut fournir une url, moi je mets http:// (ou https://) devant ex: http://localhost/toto.php

Attention aussi au mélange de minuscules majuscules dans les noms de scripts web, c'est sensible à la casse : si le fichier se nomme Rajout_Q_air.php et que tu tapes par erreur Rajout_q_air.php, tu auras une erreur 404 : normalement, pour le web, on met tout en minuscules.

Enfin, vérifies bien que data est conforme à ce qui est attendu par le serveur d'API (par Rajout_Q_air.php) , c'est le genre de chose qui provoque des http 500 (internal server error)