サーチ…


Flask APIからJSONレスポンスを返す

Flaskにはjsonify()というユーティリティがあり、JSONレスポンスを返す方が便利です

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api/get-json')
def hello():
    return jsonify(hello='world') # Returns HTTP Response with {"hello": "world"}

curl試してみてください

curl -X GET http://127.0.0.1:5000/api/get-json
{
  "hello": "world"
}

jsonify()を使用する他の方法

既存の辞書を使用する:

person = {'name': 'Alice', 'birth-year': 1986}
return jsonify(person)

リストを使用する:

people = [{'name': 'Alice', 'birth-year': 1986},
          {'name': 'Bob', 'birth-year': 1985}]
return jsonify(people) 

HTTPリクエストからJSONを受信する

HTTPリクエストのMIMEタイプがapplication/json場合、 request.get_json()を呼び出すと解析されたJSONデータが返されます(そうでない場合はNoneが返されます)

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api/echo-json', methods=['GET', 'POST', 'DELETE', 'PUT'])                                                                                                    
def add():                                                                                                                              
    data = request.get_json()
    # ... do your business logic, and return some response
    # e.g. below we're just echo-ing back the received JSON data
    return jsonify(data)

curl試してみてください

パラメータ-H 'Content-Type: application/json'は、これがJSON要求であることを指定します。

 curl -X POST -H 'Content-Type: application/json' http://127.0.0.1:5000/api/echo-json -d '{"name": "Alice"}'               
{
  "name": "Alice"
}

他のHTTPメソッドを使用してリクエストを送信するには、 curl -X POSTを目的のメソッド( curl -X GETcurl -X PUTなど)に置き換えます。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow