Tengo esto en React:
const payload = { x : x, y : y } fetch("http://localhost:8080/update_game", { method: "POST", body: JSON.stringify(payload)})
Y esto en Python:
@post('/update_game') def update_game(): req = request.json print(req);
sigo recibiendo:
None 127.0.0.1 - - [24/Jan/2022 14:06:36] "POST /update_game HTTP/1.1" 200 0
No veo qué estaría haciendo diferente a todos los otros ejemplos que he estado encontrando. payload
inicia sesión correctamente en la consola. Tengo CORS configurado y funcionando correctamente en Python. También intenté agregar contentType: application/JSON
al lado de reacción. No veo qué podría estar haciendo mal aquí.
edite para mayor claridad: estoy intentando imprimir la respuesta json en la terminal en el lado de python. Simplemente quiero ver que esta respuesta está pasando.
Descubrí este pequeño fragmento, que muestra algo, pero no es correcto:
@post('/update_game') def update_game(): req = request.forms print(dir(req)) print(dict(req)) print(req)
la salida:
{'{"x":"0","y":"6"}': ''}
Y también tengo esto:
def update_game(): req = request.headers['Content-Type'] # print(dir(req)) # print(dict(req)) print(req)
producción:
text/plain;charset=UTF-8
Estoy bastante seguro de que debería ser application/JSON
Empezando desde cero...
$ python3 -m venv venv $ source venv/bin/activate $ python -m pip install -U bottle
Crear app.py
from bottle import post, request, run @post('/echo') def echo(): data = request.json print(type(data)) return data # example to return the input run(host='localhost', port=8080, debug=True)
Ejecute python app.py
Desde una nueva terminal, paso el tipo de contenido junto con una carga útil para devolver
$ curl -H 'Content-Type: application/json' -d'{"x": 2, "y":4}' http://localhost:8080/echo {"x": 2, "y": 4}
En los registros del servidor, veo
<class 'dict'> 127.0.0.1 - - [24/Jan/2022 17:13:38] "POST /echo HTTP/1.1" 200 16
Consulte esta publicación para enviar correctamente JSON desde Javascript sin que sea text/plain
: la configuración del tipo de contenido en la solicitud de búsqueda no funciona
Encontré una solución. Esperemos que este ayude a quien tenga los mismos problemas.
import json import io @post('/update_game') def update_game(): encoding = "UTF-8" req = json.load(io.TextIOWrapper(request.body, encoding=encoding)) print(req)