基於Flask的 api(一)


Flask是一個基於Python開發的微型web框架

使用Flask實現簡單的 api

安裝

 pip install flask

flask版本

import flask
print(flask.__version__)

$ python test.py
1.1.2

eg:

from flask import Flask

app = Flask(__name__)
@app.route('/')
def hello():
    return 'hello,world'


if __name__ == "__main__":
    app.run()

瀏覽器打開http://127.0.0.1:5000/

頁面輸出

  hello,world

說明:

  Flask自帶的Server默認監聽端口為5000

啟用了 Flask 調試 模式

from flask import Flask

app = Flask(__name__)
@app.route('/')
def hello():
    return 'hello,world'

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

修改端口

from flask import Flask

app = Flask(__name__)
@app.route('/')
def hello():
    return 'hello,world'

if __name__ == "__main__":
    app.run(debug=True,port=6000)

1.GET方法

參數形式 ?key=value

from flask import Flask,request,abort

app = Flask(__name__)
@app.route('/')
def hello():
    return 'hello,world'

@app.route("/testGet", methods=['GET'])
def testGet():
    name = request.args.get('name','')
    age = request.args.get('age','')
    return {'name':name,'age':age}

if __name__ == "__main__":
    app.run()

postman測試

使用 path 的形式

from flask import Flask,request,abort
import os

app = Flask(__name__)
@app.route('/')
def hello():
    return 'hello,world'

@app.route("/testGet/<name>", methods=['GET'])
def testGet(name,age=20):

    return {'name':name,'age':age}

if __name__ == "__main__":
    app.run(debug=True,port=5000)

使用postman測試

from flask import Flask,request,abort
import os

app = Flask(__name__)
@app.route('/')
def hello():
    return 'hello,world'

@app.route("/testGet/<name>/<age>", methods=['GET'])
def testGet(name,age):

    return {'name':name,'age':age}

if __name__ == "__main__":
    app.run(debug=True,port=6000)

2.POST方法

(1)接收json數據

from flask import Flask,request,abort

app = Flask(__name__)
@app.route('/')
def hello():
    return 'hello,world'

@app.route("/testPost", methods=['POST'])
def testPost():
    if not request.json or not 'text' in request.json:
        abort(400)
    text = request.json.get('text', '')
    return {'text':text}

if __name__ == "__main__":
    app.run()

postman測試

 (2)formdata數據,request.form

from flask import Flask,request,abort

app = Flask(__name__)
@app.route('/')
def hello():
    return 'hello,world'

@app.route('/testPost', methods=['POST'])
def testPost():
    text = request.form['text']
    print(text)
    return {'text':text}

if __name__ == "__main__":
    app.run(debug=True,port=5000)

  eg:文件上傳並保存

from flask import Flask,request,abort
import os

app = Flask(__name__)
@app.route('/')
def hello():
    return 'hello,world'

@app.route('/testPost', methods=['POST'])
def testPost():
    text = request.form['text']
    message = '沒有文件'
    success = False;
    if request.files:
        file = request.files['file']
        if file:
            success = True
            filename = file.filename
            file.save(os.path.join(app.root_path, 'upload', filename))
            message = '文件已保存'+os.path.join(app.root_path, 'upload', filename)
    print(text)
    return {'success':success,'text':text,'message':message}

if __name__ == "__main__":
    app.run(debug=True,port=5000)

postman測試

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM