Parameter und Post-Body abrufen, CORS in Flask (Python) und Express (Node.js) aktivieren

Im Folgenden werden 6 Artikel vorgestellt. Ich sende aus einer HTML-Datei. Sowohl das Senden als auch das Empfangen erfolgen lokal. Wenn Sie es auf dem Server versuchen, lesen Sie bitte die entsprechende Domain.

  1. Get Flask Get Parameter
  2. Holen Sie sich den Kolbenpfostenkörper
  3. Aktivieren Sie Flask Cors
  4. Get Express Get Parameter
  5. Holen Sie sich Express Post Body
  6. Aktivieren Sie Express Cors

Bitte beachten Sie, dass alle Inhaltstypen in application / json gesendet und empfangen werden. Wenn Sie andere Stile verwenden, lesen Sie bitte ~.

HTML (Absender)

Zeigen Sie es in Ihrem Browser an und führen Sie es aus

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <input type="text" name="id" id="body">
    <button id="click">Send</button>
    <script>
        document.querySelector("#click").addEventListener("click",function(){
            let data = document.querySelector("#body").value;            
            //Get
            const params = new URLSearchParams();
            params.set("id",data);
            fetch("http://localhost:5000/get" + "?" + params.toString())
                .then((res)=>{
                    if(!res.ok){
                        throw new Error();
                    }
                    return res.json();
                })
                .then((res)=>{
                    console.log(res)
                })
                .catch((res)=>{
                    console.log(`Error Response : ${res}`);
                })

            //Post
            const body = {
                id: data
            };
            fetch("http://localhost:5000/post",{
                method: "POST",
                headers: {
                    'Content-Type' : "application/json"
                },
                body: JSON.stringify(body)
            })
                .then((res)=>{
                    if(!res.ok){
                        throw new Error();
                    }
                    return res.json();
                })
                .then((res)=>{
                    console.log(res)
                })
                .catch((res)=>{
                    console.log(`Error Response : ${res}`);
                })
        })
    </script>
</body>
</html>

Bei Verwendung von Flask (Empfänger)

# -*- encoding:utf-8 -*-
import os
import sys
import json
from flask import Flask, render_template, request
from logging import getLogger, StreamHandler, DEBUG, INFO, WARNING, ERROR, CRITICAL

app = Flask(__name__)

#Protokolleinstellungen
logger = getLogger(__name__)
handler = StreamHandler()
handler.setLevel(DEBUG)
logger.setLevel(os.getenv("LogLevel", DEBUG))
logger.addHandler(handler)
logger.propagate = False

#CORS aktivieren
@app.after_request
def after_request(response):
    logger.debug(f"\033[33m{sys._getframe().f_code.co_name} function called\033[0m")
    response.headers.add('Access-Control-Allow-Origin', '*')
    response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
    response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS')
    return response

#Parameter abrufen Get
@app.route('/get')
def get():
    #Argumentprüfung
    if "id" not in request.args:
        logger.warning("id Parameter is not send")
        return json.dumps({"message": "send message"})

    ID = request.args.get('id')
    logger.info(f"ID = {ID}")

    return json.dumps({"Get message": ID})

#Holen Sie sich Post Körper
@app.route('/post',methods=["POST"])
def post():
    logger.info(f"request.data={request.data}")
    data = request.get_json()
    logger.debug(f"data = {data}")
    logger.debug(f"type(data) = {type(data)}")

    #application/Wenn Sie es im JSON-Format erhalten, können Sie es auch wie folgt empfangen
    logger.debug(f"request.json = {request.json}")
    logger.debug(f"type(request.json) = {type(request.json)}")

    #Argumentprüfung
    if "id" not in request.json:
        logger.warning("id Parameter is not send")
        return json.dumps({"message": "send message"})

    ID = request.json["id"]
    logger.info(f"ID = {ID}")

    return json.dumps({"Post message": ID})

if __name__ == "__main__":
    app.run(host='0.0.0.0',port=5000)

Bei Verwendung von Express (Empfänger)

*** Wenn die Express-Version 4.16 oder höher ist, ist kein Body-Parser erforderlich und kann nur mit Express implementiert werden ***

const express = require('express');
const app = express()
/**
 * Express 4.Nach 16 Körper-Express basierend auf Parser implementiert.json()
 *Sie können den POST-Body mit erhalten.
 *Daher gilt wie folgt.Es ist nicht nötig, einen Körper zu machen.
 * 
 * const bodyParser = require('body-parser');
 * app.use(bodyParser.urlencoded({ extended: false }));
 */
app.use(express.json()); //Content-Typ ist Anwendung/Benötigen Sie dies, wenn als json gesendet
app.use(express.urlencoded({ extended: true }));

 //CORS aktivieren
app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

//Parameter abrufen Get
app.get('/get', (req, res) => {
  let response = "";
  console.log(req.query);
  console.log(typeof req.query);
  if(req.query.hasOwnProperty("id")){
    response = req.query.id
  }
  res.json({"Get Parameter" : response});
})

//Holen Sie sich Post Körper
app.post('/post', (req, res) => {
  let response = "";
  console.log(req.body);
  console.log(typeof req.body);
  if(req.body.hasOwnProperty("id")){
    response = req.body.id
  }
  res.json({"Post Body" : response});
})

//Schreiben Sie im zweiten Argument von listen eine Rückruffunktion, die unmittelbar nach dem Beginn des Abhörens ausgeführt werden soll.
app.listen(5000)

Recommended Posts

Parameter und Post-Body abrufen, CORS in Flask (Python) und Express (Node.js) aktivieren
Holen Sie sich ein Kommunikationsmemo in Python
POST verschieden mit Python und empfange mit Flask
(Für mich) Flask_3 (Formular, POST und GET)
POST JSON mit Python und empfange mit PHP
Holen Sie sich den Betreff und den Text von Google Mail mit der Python- und Google Mail-API
Rufen Sie die aktuellen Standortinformationen und den Benutzeragenten in Python ab
Holen Sie sich Aktienkurse und erstellen Sie mit Python Kerzendiagramme
GET / POST-Kommunikation von Flask (auch über CORS-Unterstützung)
Holen Sie sich Datum in Python
Holen Sie sich den MIME-Typ in Python und bestimmen Sie das Dateiformat
Holen Sie sich das aktuelle Datum und die aktuelle Uhrzeit in Python unter Berücksichtigung des Zeitunterschieds
Holen Sie sich YouTube-Kommentare in Python
Holen Sie sich letzten Monat in Python
Installieren Sie Python und Flask (Windows 10)
Verwenden Sie den Parameterspeicher in Python
Holen Sie sich die Terminalgröße in Python
Holen Sie sich explizit EOF in Python
Stapel und Warteschlange in Python
Unittest und CI in Python
[Python] Quotient und Überschuss erhalten
Holen Sie sich Evernote-Notizen in Python
Übertragen Sie Parameterwerte in Python
Post an Slack in Python
Holen Sie sich japanische Synonyme mit Python
[ROS2] Beschreibung der Neuzuordnung und der Parameter beim Start des Python-Formats
Ich habe Node.js und Python beim Erstellen eines Miniaturbilds mit AWS Lambda verglichen
Holen Sie sich den Titel und das Lieferdatum von Yahoo! News in Python