[PYTHON] Envoyer msgpack avec ajax à l'environnement flask (werkzeug)

msgpack données du côté client avec js dans un environnement werkzeug Je l'ai envoyé comme suit.

Côté client

ninja.coffee


sendMsgPack:(event)=>
  event.preventDefault()
  arr = $('#hogehogeForm').serializeArray()
  data = msgpack.pack(arr)
  arrayBinary = new Uint8Array(data)
  xhr = new XMLHttpRequest()
  xhr.open('POST', '/api/url', true)
  xhr.onreadystatechange = ()->
  if xhr.readyState is 4 and xhr.status is 200
      console.log xhr.responseText
  else if xhr.readyState is 4 and xhr.status isnt 200
      console.log xhr, "hogehoge"
  xhr.setRequestHeader('Content-Type', 'application/x-msgpack; charset=x-user-defined')
  xhr.send(arrayBinary.buffer)

Du côté serveur

tasukete.py


import msgpack
from shimehari import Response, ApplicationController, request
import msgpack

class FooController(ApplicationController):
    def __init__(self, name):
        ApplicationController.__init__(self, name)

    def index(self, *args, **kwargs):
        return 'hidebu'

    def create(self, *args, **kwargs):
        #Regardons vraiment l'en-tête
        print msgpack.unpackb(request.data)
        return Response('aaa')
$ ({'name': 'name', 'value': 'aaaaa'},)

Il semble que msgpack.js a une méthode appelée msgpack.upload. La méthode est PUT, ou le Content-Type de l'en-tête de la requête est ʻapplication / x-www-form-urlencoded`. J'ai ressenti quelque chose d'incommensurable, alors j'ai utilisé le XMLHttpRequest brut pour le moment. C'est inutile car ArrayBuffer ne peut pas être envoyé avec jQuery.ajax.

Lorsque j'ai défini le Content-Type sur x-www-form-urlencoded, j'ai senti que ce n'était pas le cas que les données envoyées étaient stockées dans Request.form au lieu de Request.data dans werkzeug. J'ai réussi à le faire.

Enfin, j'ai décidé de l'envoyer par WebSocket. Eh bien, je pense qu'il existe de nombreuses situations où WebSocket ne peut pas être utilisé, mais si vous le rafraîchissez de manière pratique, ce sera utile.

Je pense qu'il y a beaucoup d'endroits où aller, alors faites-le moi savoir si vous avez des détails.

Recommended Posts

Envoyer msgpack avec ajax à l'environnement flask (werkzeug)
Envoyer du CSS compressé à Gzip avec Flask
De la construction de l'environnement au déploiement pour flask + Heroku avec Docker
Créer un environnement Flask avec Dockerfile + docker-compose.yml
Lorsque vous souhaitez envoyer un objet avec des requêtes à l'aide de flask
Changer l'environnement Python 64 bits en environnement 32 bits avec Anaconda
mail html avec image à envoyer avec python
Vue.js + Mémorandum de construction de l'environnement Flask ~ avec Anaconda3 ~
Envoyer des données à l'API DRF avec Vue.js
Comment télécharger avec Heroku, Flask, Python, Git (4)
Envoyer un message à LINE avec Python (LINE Notify)
Comment envoyer un message à LINE avec curl
Envoyez un email à l'adresse de Spushi avec python
Exemple de notification Slack avec python lambda
De la construction d'environnement Python à la construction d'environnement virtuel avec anaconda
Utilisation de Flask avec la configuration Nginx + gunicorn [Environnement local]
Flux pour terminer l'authentification Slack avec Flask (Python)
Construction d'environnement virtuel avec Docker + Flask (Python) + notebook Jupyter
Je veux faire la transition avec un bouton sur le ballon
De Kafka à KSQL - Construction d'environnement facile avec docker
Comment télécharger avec Heroku, Flask, Python, Git (Partie 3)
Journal de sortie vers la console avec Flask + Nginx sur Docker
Essayez de créer une API RESTful avec MVC à l'aide de Flask 1.0.2
Comment télécharger avec Heroku, Flask, Python, Git (Partie 1)
termux × AWS Envoyez des informations de localisation de smartphone à AWS avec l'IoT
Comment télécharger avec Heroku, Flask, Python, Git (Partie 2)
Ssh dans un environnement virtuel avec vscode Remote Development
Simulez la mesure de température avec Raspberry Pi + Flask + SQLite + Ajax
Créer un environnement pour utiliser CaboCha avec Google Colaboratory