从Python上的post方法获取变量

时间:2018-11-22 23:37:29

标签: javascript python rest api

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

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

1 个答案:

答案 0 :(得分:2)

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

这里是app.py,其中包含烧瓶Python服务器:

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


这是一个示例表单,会将名称和年龄字段发布到烧瓶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>

希望您能早日入门!


  

建议阅读

     

JS Fetch API