- 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を提供する方法であると簡単に理解できます。
- フラスコフレームワーク
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サービスを構築するプロセスを簡単に紹介します。記事の例はすべて実行可能です。詳しくは公式サイト紹介をご覧ください。