Post-traitement de python (NG)

Ceci est un exemple de gestion des paramètres Post ne fonctionnant pas sur un serveur Python.

Programme serveur

simple_server.py


import http.server
import socketserver
from http.server import BaseHTTPRequestHandler
import cgi
import sys

class PostHandler(BaseHTTPRequestHandler):
	def do_POST(self):
		sys.stderr.write("*** do_POST *** aaa\n")
		try:
			ff = cgi.FieldStorage(
				self.rfile,
				self.headers,
				environ={
				"REQUEST_METHOD": "POST",
				"CONTENT_TYPE": self.headers["Content-Type"],
				},)
			key = ff.getfirst("key","")
			sys.stderr.write("*** do_Post *** key = %s\n" % key)
		except Exception as ee:
			sys.stderr.write("*** error *** in cgi.FieldStorage ***\n")
			sys.stderr.write(str(ee) + "\n")

if __name__ == '__main__':
	sys.stderr.write("*** start ***\n")
	PORT = 8080

	with socketserver.TCPServer(("", PORT), PostHandler) as httpd:
		print("serving at port", PORT)
		sys.stderr.write("*** start ***\n")
		httpd.serve_forever()

serveur -Exécution

python3 simple_server.py

Accès depuis le client

  1. Cas où les paramètres POST peuvent être passés
curl -X POST http://localhost:8080/ -d 'key=t1855'
  1. Cas où les paramètres POST ne peuvent pas être passés
curl -X POST -H "Content-Type: application/json" -d '{"key":"t1855"}' http://localhost:8080/

Erreur côté serveur

*** error *** in cgi.FieldStorage ***
write() argument must be str, not bytes
  1. Je ne peux pas non plus passer le cas suivant.
curl -X POST -H "Content-Type: application/json" [email protected] http://localhost:8080/

in01.json


{"key":"t1855"}

Version utilisée pour les tests (Ubuntu 19.10)

$ python3 --version
Python 3.7.5

Même résultat pour la prochaine version (Arch Linux)

$ python3 --version
Python 3.8.1

Recommended Posts

Post-traitement de python (NG)
Divers traitements de Python
Bases du traitement d'images binarisées par Python
traitement d'image python
Traitement de fichiers Python
Échelle de gris par matrice-Reinventor of Python image processing-
Les bases de Python ①
Copie de python
Dessin avec Matrix-Reinventor of Python Image Processing-
L'histoire du traitement A du blackjack (python)
Statut de chaque système de traitement Python en 2020
Filtrage par convolution par matrice-Reinventor of Python image processing-
Introduction de Python
Afficher le résultat du traitement de la géométrie en Python
Traitement d'image? L'histoire du démarrage de Python pour
Traitement distribué Python Spartan
[Python] Opération d'énumération
Liste des modules python
Traitement de fichiers en Python
Python: traitement du langage naturel
Traitement de la communication par Python
Traitement multithread en python
Unification de l'environnement Python
Copie des préférences python
Principes de base du grattage Python
[python] comportement d'argmax
Premier traitement d'image Python
Utilisation des locaux Python ()
le zen de Python
Traitement de texte avec Python
Installation de Python 3.3 rc1
Traitement des requêtes en Python
Traitement d'image avec Python
# 4 [python] Bases des fonctions
Connaissance de base de Python
Anecdotes sobres de python3
Résumé des arguments Python
Bases de python: sortie
Installation de matplotlib (Python 3.3.2)
Application de Python 3 vars
Illustration de traitement de chaîne Python
[Traitement du langage 100 coups 2020] Résumé des exemples de réponses par Python
Traitement d'image par matrice Basics & Contents-Reinventor of Python image processing-
Exemple d'implémentation d'un système de traitement LISP simple (version Python)
[Chapitre 5] Introduction à Python avec 100 coups de traitement du langage
Examiner le traitement de fermeture de l'ensemble de données Python (wrapper SQLAlchemy)
[Chapitre 3] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 2] Introduction à Python avec 100 coups de traitement du langage
Traitement asynchrone de Python ~ Comprenez parfaitement async et attendez ~
Récapitulatif du traitement de la date en Python (datetime et dateutil)
[Chapitre 4] Introduction à Python avec 100 coups de traitement du langage
Traitement d'image avec Python (partie 2)
100 coups de traitement du langage avec Python 2015
[Python] Utilisation correcte de la carte
Traitement de texte UTF8 avec python
python3 Mesurez la vitesse de traitement.