おそらくgcloudのツールとかを使ってローカルに仮想環境作ったりするのが順当な手順なんだと思うが、めんどくさかったのでflaskの test_request_context()
を使った。
以下がcloudfunctionsのhello_world関数
def hello_world(request):
"""Responds to any HTTP request.
Args:
request (flask.Request): HTTP request object.
Returns:
The response text or any set of values that can be turned into a
Response object using
`make_response <http://flask.pocoo.org/docs/1.0/api/#flask.Flask.make_response>`.
"""
request_json = request.get_json()
if request.args and 'message' in request.args:
return request.args.get('message')
elif request_json and 'message' in request_json:
return request_json['message']
else:
return f'Hello World!'
これを動かすにはこのようにすれば良い
import flask
app = flask.Flask(__name__)
@app.route('/test/')
def hello_world(request):
"""Responds to any HTTP request.
Args:
request (flask.Request): HTTP request object.
Returns:
The response text or any set of values that can be turned into a
Response object using
`make_response <http://flask.pocoo.org/docs/1.0/api/#flask.Flask.make_response>`.
"""
request_json = request.get_json()
if request.args and 'message' in request.args:
return request.args.get('message')
elif request_json and 'message' in request_json:
return request_json['message']
else:
return f'Hello World!'
if __name__ == '__main__':
with app.test_request_context('/test/'):
response = hello_world(flask.request)
print(f'{response}')
with app.test_request_context('/test?message=hello_hello_how_low?'):
response = hello_world(flask.request)
print(f'{response}')