使用 Python 3和 Flask 設計 RESTful API

 使用 Python Flask 設計 RESTful APIhtml

參考文檔:http://www.pythondoc.com/flask-restful/first.htmlpython

 近些年來 REST (REpresentational State Transfer) 已變成 web services web APIs 的標配。本文將展現如何簡單地使用 Python Flask 框架來建立一個 RESTful web service.安裝了 Flask,如今開始創。一個簡單地網頁應用,咱們把它放在一個叫 app.py 的文件中:web

 

1、配置簡單啓動demo數據庫

代碼以下,啓動方式以下。json

[root@openshift flask]# vim app.pyflask

from flask import Flaskvim

app = Flask(__name__)api

@app.route('/')restful

def index():app

    return "Hello, World!"

if __name__ == '__main__':

    app.run(debug=True,host='172.16.16.71',port=5000)                                                                                          

[root@openshift flask]# python app.py

[root@openshift ~]# curl http://172.16.16.71:5000/

Hello, World!

 

2使用 Python Flask 實現 RESTful services

使用 Flask 構建 web services 是十分簡單地,比在 Flask 中有許多擴展來幫助咱們構建 RESTful services

 

以下源代碼,

[root@openshift flask]# vim app.py

#coding:utf8

from flask import Flask,jsonify

 app = Flask(__name__)

 jobs = [

    {

        'id': 1,

        'post': u'運維工程師',

        'level':'professor'

    },

    {

        'id': 2,

        'post': '產品經理',

        'level':'primary'

    }

]

 @app.route('/todo/api/v1.0/tasks', methods=['GET'])

def get_tasks():

    return jsonify({'jobs':jobs})

 if __name__ == '__main__':

app.run(debug=True,host='172.16.16.71',port=5000)

該demo實現的是使用GET方法獲取json數據

 

3、使用POST方法插入json數據

首先了解一下Python3+filter用法

 

>>> jobs= [{'id':1,'post':'sale'},{'id':2,'post':'boss'},{'id':3,'post':'tech'},{'id':4,'post':'test'}]

>>> job = filter(lambda t: t['id'] == 2, jobs)

>>> print(job)      

<filter object at 0x7fa09bb00400>

>>> print(list(job))

[{'id': 2, 'post': 'boss'}]

>>> print(list(job))      //再次輸入,值爲空

[]

>>> print(len(list(job)))

0

 

接下來就是 POST 方法,咱們用來在咱們的任務數據庫中插入一個新的任務:

from flask import request

@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': task}), 201

以下,是測試代碼和測試方法

[root@openshift flask]# curl -i -H "Content-Type: application/json" -X POST -d '{"post":"manager"}' http://172.16.16.71:5000/todo/api/v1.0/tasks

 

 

4、使用PUT方法修改json數據

使用DELETE方法刪除json數據

delete_task 函數沒有什麼特別的。對於 update_task 函數,咱們須要嚴格地檢查輸入的參數以防止可能的問題。咱們須要確保在咱們把它更新到數據庫以前,任何客戶端提供咱們的是預期的格式。

[root@openshift flask]# curl -i -H "Content-Type: application/json" -X PUT -d '{"post":asdasdasdad}' http://172.16.16.71:5000/todo/api/v1.0/tasks/2

 

PUT(修改)和DELETE(刪除)方法。

 

[root@openshift flask]# curl -i -H "Content-Type: application/json" -X PUT -d '{"post":"man","level":"chuji"}' http://172.16.16.71:5000/todo/api/v1.0/tasks/2

[root@openshift flask]# curl -i -H "Content-Type: application/json" -X DELETE -d http://172.16.16.71:5000/todo/api/v1.0/tasks/2

 自此,完成了restful接口GET、POST、PUT、DELETE方法的實現。

相關文章
相關標籤/搜索