javascript - 从 Python 上的 post 方法获取变量

标签 javascript python rest api

我制作了一个运行一些任务的 python 脚本,但我希望它在客户端(前端表单)向服务器发送 POST 请求时启动。这样我就可以从客户端获取变量并使用该变量运行我的脚本。

我想我需要在 python 脚本上定义一个服务器来接受 post 请求,但我不知道从哪里开始。你能帮我一点吗?

最佳答案

我创建了一个简单的 Flask 服务器,它将人员信息附加到从客户端接收到的列表中。

这是包含 Flask Python 服务器的app.py:

import os
import uuid

from flask import Flask, jsonify, request
from flask_cors import CORS

# instantiate the app
app = Flask(__name__)
app.config.from_object(__name__)

# enable CORS
CORS(app)

#static list containing persons
persons = []

#test check route
@app.route('/status', methods=['GET'])
def status():
    return jsonify(dict({ 'message': 'Hello world'}))


@app.route('/person', methods=['POST'])
def add_person():
    post_data = request.get_json()
    response_object = dict({
            'id': uuid.uuid4().hex,
            'name': post_data.get('name'),
            'age': post_data.get('name')
        })
    persons.append(response_object)
    return jsonify(response_object), 201


@app.route('/person', methods=['GET'])
def get_persons():
    return jsonify(persons), 200

@app.route('/person/<person_id>', methods=['GET'])
def get_person(person_id):
    person = list(filter(lambda x: x['id'] == person_id, persons))
    return jsonify(person), 200

if __name__ == '__main__':
    app.run(debug=True)

保存脚本并使用以下命令运行它:

python app.py


这是一个示例表单,它将把姓名和年龄字段发布到您的 Flask API:

// Write the following in index.js
window.onload = () => {


  document.querySelector('#btnSubmit').addEventListener('click', function(event) {

    const pName = document.querySelector('#pName').value;
    const pAge = document.querySelector('#pAge').value;

    if (!pName || !pAge) {
      alert('Please enter all fields to continue!');
      return;
    }

    const objectToSend = {
      name: pName,
      age: pAge
    };

    fetch('http://localhost:5000/person', {
        method: 'POST',
        mode: 'cors',
        body: JSON.stringify(objectToSend)
        headers: new Headers({
          'Content-Type': 'application/json',
          'Access-Control-Allow-Origin': '*'
        })
      })
      .then(function(response) {
        return response.json()
      })
      .then(function(data) {
        console.log(data);
      })
      .catch(function(err) {
        console.err(err);
      });

  });

}
<!DOCTYPE HTML>
<HTML>

<!-- <script src="index.js"> -->

<BODY>
  <FORM name="myform">
    <label>Name: <input id="pName" type="text" placeholder="Enter name"></label>

    <label>Age: <input type="number" id="pAge" placeholder="Enter age"></label>

    <input type="button" id="btnSubmit" value="Submit">

  </FORM>

</BODY>

</HTML>

希望这能让您抢占先机!


Suggested Reading:

JS Fetch API

关于javascript - 从 Python 上的 post 方法获取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53439105/

相关文章:

javascript - 尽管有外部声明,但 Firebase 数据库中的变量在全局范围内看不到。 (javascript)

python - 当我使用 discord.py 使用 ast.literal_eval 时,第 1 行出现格式错误的节点或字符串

node.js - NodeJS 路由器负载太大

javascript - 使用键盘存储以前的剑道下拉列表选项

javascript - 导入 React 与 React,{ 组件 }

javascript - 使用 ngshow "ng-show="传递数组值 likeClicked[{{comment.id}}]"有效或无效

python - 使用 cartopy 将地球静止数据点投影到规则网格上

python - 分块下载并提取 Python 中的 tar 文件

java - 使用 Jersey 在正文请求中 POST JSON

ios - 调试 API 请求