[python]フラスコフレームワークを使用してRESTfulサービスを構築する

  1. RESTとは何ですか?RESTの
    フルネームはRepresentational State Transferであり、これはアーキテクチャスタイルです。簡単に言えば、これはWebインタラクションの方法です。ユーザーは特定のURLを介してリソースにアクセスし、リソースはjson形式でユーザーに返されます。天気をチェックする例を挙げて
    くださいhttps //v0.yiketianqi.com/api?version = v10&appid = xxx&appsecret = xxx

もちろん、実際のappidとappsecretのデータを入力して調べる必要があります。

戻る

{
    
    
    "air":"99",
    "air_level":"良",
    "air_tips":"空气好,可以外出活动,除极少数对污染物特别敏感的人群以外,对公众没有危害!",
    "pm25":"66",
    "pm25_desc":"良",
    "pm10":"147",
    "pm10_desc":"良",
    "o3":"29",
    "o3_desc":"优",
    "no2":"62",
    "no2_desc":"良",
    "so2":"11",
    "so2_desc":"优",
    "kouzhao":"无需戴口罩",
    "waichu":"适宜外出",
    "kaichuang":"适宜开窗",
    "jinghuaqi":"关闭净化器",
    "cityid":"101120101",
    "city":"济南",
    "cityEn":"jinan",
    "country":"中国",
    "countryEn":"China"
}

Restfulスタイルは、HTTP + JSONを使用して外部APIを提供する方法であると簡単に理解できます。

  1. フラスコフレームワーク
    pythonは広く愛されている言語であり、多くのフレームワークがあり、開発効率は非常に高いです。その中で、フラスコフレームワークはRESTfulサービスを開発する典型的な例です。使い方もとても簡単です。
    2.1フラスコの使用を開始する
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from flask import Flask

app = Flask(__name__)


@app.route('/GoogNight')
def goog_night():
    return "GoogNight!"


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=9090)


[root @ localhost pys] #python goodnight.py
実行するだけで、httpサービスを開始できます。
テストでは、ブラウザのアドレスバーにhttp:// xxxx:9090 / GoogNightと入力
すると、次のように表示されます。GoogNight!

2.2エンジニアリング
次に、インターフェースがますます増える可能性があります。それらを1つのファイルに入れると、ニーズを満たすことができなくなります。次に、ブループリント使用して、各インターフェース(関数/ルート)を各ファイルに配布できます。
文字列を組み立てると、pythonにも成熟したライブラリがあります。jsonifyを使用して作業のこの部分完了することができます
次に、requestを使用てリクエストパラメータ解析します。これらの後、簡単なWebAPIサービスを生成できます。

server.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from flask import Flask, abort, request, jsonify
from get_task import get_task
from datas import tasks

app = Flask(__name__)
app.register_blueprint(get_task, url_prefix="/get_task/")

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8383, debug=True)

データ

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 测试数据暂时存放
tasks = [{
    
    "id": 123, "info": "test task"}, {
    
    "id": 124, "info": "task 22"}]

インターフェイスを実装する

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from flask import Flask, abort, request, jsonify
from flask import Blueprint
from datas import tasks

get_task = Blueprint('get_task', __name__)


@get_task.route('/get', methods=['GET'])
def get_tasks():
    if not request.args or 'id' not in request.args:
        # 没有指定id则返回全部
        return jsonify(tasks)
    else:
        return  jsonify({
    
    'result': 'not found'})


@get_task.route('/post', methods=['POST'])
def get_tasks_():
    if not request.args or 'id' not in request.args:
        return jsonify(tasks)
    else:
        return  jsonify({
    
    'result': 'not found'})

2.3 CORSの問題が発生する可能性があります。解決策は次のとおりです。Pythonスクリプトに、次のコードを追加してください

from flask_cors import CORS
CORS(get_task, supports_credentials=True)
テスト

http:// xxxx:8383 / get_task / get
出力

[
  {
    
    
    "id": 123, 
    "info": "test task"
  }, 
  {
    
    
    "id": 124, 
    "info": "task 22"
  }
]

[root @ localhost〜] #curl -H“ Content-Type:application / json” -X POST“ http://127.0.0.1:8383/get_task/post”

[
  {
    
    
    "id": 123, 
    "info": "test task"
  }, 
  {
    
    
    "id": 124, 
    "info": "task 22"
  }
]

この記事では、フラスコフレームワークを使用してRESTfulサービスを構築するプロセスを簡単に紹介します。記事の例はすべて実行可能です。詳しくは公式サイト紹介をご覧ください。

おすすめ

転載: blog.csdn.net/niu91/article/details/110153133