• python flask demo


    from flask import Flask, jsonify
    from flask import abort
    from flask import make_response
    from flask import request
    from flask_httpauth import HTTPBasicAuth
    from flask import url_for
    auth = HTTPBasicAuth()
    app = Flask(__name__)
    
    
    
    def make_public_task(task):
        new_task = {}
        for field in task:
            if field == 'id':
                new_task['uri'] = url_for('get_task', task_id=task['id'], _external=True)
            else:
                new_task[field] = task[field]
        return new_task
    tasks = [
        {
            'id': 1,
            'title': u'Buy groceries',
            'description': u'Milk, Cheese, Pizza, Fruit, Tylenol', 
            'done': False
        },
        {
            'id': 2,
            'title': u'Learn Python',
            'description': u'Need to find a good Python tutorial on the web', 
            'done': False
        }
    ]
    @app.route('/')
    def index():
        return "Hello, World!"
    
    @app.route('/todo/api/v1.0/tasks', methods=['GET'])
    def get_tasks():
        return jsonify({'tasks': tasks})
    
    
    @app.route('/todo/api/v1.0/tasks/<int:task_id>', methods=['GET'])
    def get_task(task_id):
        task = list(filter(lambda t: t['id'] == task_id, tasks))
        if len(task) == 0:
            abort(404)
        return jsonify({'task': task[0]})
    
    @app.route('/todo/api/v1.0/tasks', methods=['POST'])
    def create_task():
        if not request.json or not 'title' in request.json:
            abort(400)
        task = {
            'id': tasks[-1]['id'] + 1,
            'title': request.json['title'],
            'description': request.json.get('description', ""),
            'done': False
        }
        tasks.append(task)
        return jsonify({'task': tasks}), 201
    
    @app.route('/todo/api/v1.0/tasks/<int:task_id>', methods=['PUT'])
    def update_task(task_id):
        task = list(filter(lambda t: t['id'] == task_id, tasks))
        if len(task) == 0:
            abort(404)
        if not request.json:
            abort(400)
        print(type(request.json['title']))
        if 'title' in request.json and type(request.json['title']) != unicode:
            abort(400)
        if 'description' in request.json and type(request.json['description']) is not unicode:
            abort(400)
        if 'done' in request.json and type(request.json['done']) is not bool:
            abort(400)
        task[0]['title'] = request.json.get('title', task[0]['title'])
        task[0]['description'] = request.json.get('description', task[0]['description'])
        task[0]['done'] = request.json.get('done', task[0]['done'])
        return jsonify({'task': task[0]})
    
    @app.route('/todo/api/v1.0/tasks/<int:task_id>', methods=['DELETE'])
    def delete_task(task_id):
        task = list(filter(lambda t: t['id'] == task_id, tasks))
        if len(task) == 0:
            abort(404)
        tasks.remove(task[0])
        return jsonify({'result': True})
    
    @app.errorhandler(404)
    def not_found(error):
        return make_response(jsonify({'error': 'Not found'}), 404)
    
    @auth.get_password
    def get_password(username):
        if username == 'ok':
            return 'python'
        return None
    @auth.error_handler
    def unauthorized():
        return make_response(jsonify({'error': 'Unauthorized access'}), 403)
    @auth.error_handler
    def unauthorized():
        return make_response(jsonify({'error': 'Unauthorized access'}), 401)
    if __name__ == '__main__':
        app.run(debug=True)

  • 相关阅读:
    20159302 《网络攻击与防范》第三周学习总结
    Json序列化空时间字段出异常
    IIS 原理
    谴责盛大Bambook 的ADB.EXE流氓进程
    Fix: ADB server didn’t ACK
    在线UI设计
    解决装Windows蓝屏问题。
    如何成为一个C++高级程序员
    Python编程规范及性能优化
    iDempiere 使用指南 插件安装过程
  • 原文地址:https://www.cnblogs.com/sea-stream/p/10333397.html
Copyright © 2020-2023  润新知