ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Flask框架-常用Method JSON数据获取方式

2021-04-29 23:35:11  阅读:138  来源: 互联网

标签:__ resp Flask app request json content JSON Method


一、Post JSON数据获取方式

提交任务:
curl -i -H "Content-Type: application/json" -X POST -d '{"appIds": [ {"appid": "1076877374"}, {"appid": "1108288808"} ], "language": "cn", "EmailAddress": "", "ClusterNum": 2, "WordNum": 2, "EmailMessage": true, "ShowOnWebPage": true}' http://182.254.247.157:5000/ana
from flask import Flask, jsonify, request, abort
import json
app = Flask(__name__)


@app.route('/ana', methods=['GET', 'POST'])
def call_analysis():
    print "Hello, World!"
    # if not request.json:(NO)
    #   abort(400)
    #
    # # data = request.get_json['appIds'] (NO)

可用方式一:
    data = request.data   ----获取的是字符串

可用方式二:
    data = request.get_data()  ----获取的是字符串

(方式一和方式二得到的是原始提交的数据)
    j_data =  json.loads(data) -----load将字符串解析成json

    print "j_data", j_data['language'] 

    return jsonify(task_j)
    # return jsonify({'task': runAnalysis(data)}), 201



json模块编码: json.dumps()
json模块解码:解码python json格式,用json.loads()

二、Post 或者 Get请求参数

  • 目录结构
app
|----static(空)
|----templates(空)
|----flaskapp.py
  • flaskapp.py
# -*- coding: utf-8 -*-  
from flask import Flask  
from flask import request  
from flask import make_response,Response  
  
import json  
  
app = Flask(__name__)  
 
 
@app.route('/')  
def hello_world():  
    return 'hello world'  
  
def Response_headers(content):  
    resp = Response(content)  
    resp.headers['Access-Control-Allow-Origin'] = '*'  
    return resp  
 
@app.route('/test', methods=['POST'])  
def test():  
    if request.method == 'POST' and request.form.get('aaa'):  
        # POST:
        # request.form获得所有post参数放在一个类似dict类中,to_dict()是字典化
        # 单个参数可以通过request.form.to_dict().get("xxx","")获得
        # ----------------------------------------------------
        # GET:
        # request.args获得所有get参数放在一个类似dict类中,to_dict()是字典化
        # 单个参数可以通过request.args.to_dict().get('xxx',"")获得
        datax = request.form.to_dict()
        content = str(datax)  
        resp = Response_headers(content)  
        return resp  
    else:  
        content = json.dumps({"error_code":"1001"})  
        resp = Response_headers(content)  
        return resp  
 
 
@app.errorhandler(403)  
def page_not_found(error):  
    content = json.dumps({"error_code": "403"})  
    resp = Response_headers(content)  
    return resp  
 
@app.errorhandler(404)  
def page_not_found(error):  
    content = json.dumps({"error_code": "404"})  
    resp = Response_headers(content)  
    return resp  
 
@app.errorhandler(400)  
def page_not_found(error):  
    content = json.dumps({"error_code": "400"})  
    # resp = Response(content)  
    # resp.headers['Access-Control-Allow-Origin'] = '*'  
    resp = Response_headers(content)  
    return resp  
    # return "error_code:400"  
 
@app.errorhandler(410)  
def page_not_found(error):  
    content = json.dumps({"error_code": "410"})  
    resp = Response_headers(content)  
    return resp  
 
@app.errorhandler(500)  
def page_not_found(error):  
    content = json.dumps({"error_code": "500"})  
    resp = Response_headers(content)  
    return resp  
  
if __name__ == '__main__':  
    app.run(debug=True,threaded=True) 

三、写一个server来接收数据,请求方式为post,传输方式为https

  • 相关flask接收文件代码
import os
from flask import Flask, request, redirect, url_for
from werkzeug import secure_filename
from werkzeug.serving import run_simple

UPLOAD_FOLDER = '/path/to/the/uploads'
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

def allowed_file(filename):
    return '.' in filename and \
           filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        file = request.files['file']
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
            return redirect(url_for('uploaded_file',
                                    filename=filename))
    return '''
    <!doctype html>
    <title>Upload new File</title>
    <h1>Upload new File</h1>
    <form action="" method=post enctype=multipart/form-data>
      <p><input type=file name=file>
         <input type=submit value=Upload>
    </form>
    '''

if __name__ == '__main__':
    run_simple('yourIP',port,app)
  • 此时传输方式为http,要将其改成https,则需要将最后一行改为
run_simple('yourIP',port,app,ssl_context('/way/to/.crt','/way/to/.key'))
  • 此时就可以运行啦~~
  • 直接登录网页或者用curl命令可以进行测试

  • 关于flask写html接收文件数据的代码:
import os
from flask import Flask,request,redirect,url_for,send_from_directory
from werkzeug.serving import run_simple
from werkzeug import secure_filename
import time

UPLOAD_FOLDER = '/path/to/the/uploads'

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

@app.route('/',methods=['GET','POST'])
def upload_file():
        if request.method == 'POST':
                content = request.data
                filename = time.time()
                with open(str(filename)+".json","w") as f:
                        f.write(content)
                        f.close()
                return "success!"
        return '''
        <!doctype html>
        <title>Info</title>
        <h1>server is running</hi>
        '''

if __name__ == '__main__':
        run_simple('yourIP',port,app
,ssl_context=('/way/to/.crt','/way/to/.key')
)
  • 此时登录网页可以查看服务器是否在运行,用curl测试发送数据
curl -d "@example.json" https://yourIP:port -k

标签:__,resp,Flask,app,request,json,content,JSON,Method
来源: https://www.cnblogs.com/dai-zhe/p/14720212.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有