Beim Erstellen eines Backends auf der Google Cloud Platform dauert die Bereitstellung etwa eine Minute. Daher ist es problemlos möglich, eine Umgebung zu erstellen, die während der Entwicklung lokal emuliert wird. So emulieren Sie Cloud-Funktionen in einer Python-Umgebung.
Erstellen Sie eine Funktion namens Hallo in main.py und fügen Sie sie ein
main.py
def hello(request):
request_json = request.get_json()
if request.args and 'message' in request.args:
return request.args.get('message')+'get'
elif request_json and 'message' in request_json:
return request_json['message']+'post'
else:
return f'Hello Worlds!'
Geben Sie in diesen Ordner das unten stehende Terminal ein.
terminal.
functions-framework --target=hello
Bei der Angabe des Ports ist dies wie folgt.
terminal.
functions-framework --target=hello --port=8081
Dies ist ein Curl-Befehl zum Debuggen.
get.Kommunikation
curl -X GET "localhost:8081/?message=Hi,get"
post.Kommunikation
curl -X POST -H "Content-Type: application/json" -d '{"message":"hi,post"}' localhost:8081/
main.py
def hello(request):
request_json = request.get_json()
headers = {
'Access-Control-Allow-Origin': '*',
}
"""
headers = {
'Access-Control-Allow-Origin': 'https://example.com',
}
"""
if request.args and 'message' in request.args:
return (request.args.get('message')+'get', 200, headers)
elif request_json and 'message' in request_json:
return (request_json['message']+'post', 200, headers)
else:
return (f'Hello Worlds!', 200, headers)
Deployment
Wenn alles gut geht, stellen Sie es auf GCP bereit.
terminal.
gcloud functions deploy hello \
--runtime python37 --trigger-http --allow-unauthenticated
https://cloud.google.com/functions/docs/quickstart
https://github.com/GoogleCloudPlatform/functions-framework-python
In der Realität liegt der Rückgabewert häufig im JSON-Format vor, so dass dies der Fall ist.
main.py
import json
def hello(request):
request_json = request.get_json()
headers = {
'Access-Control-Allow-Origin': 'http://localhost:8080',
}
"""
headers = {
'Access-Control-Allow-Origin': 'https://example.com',
}
"""
print('called')
if request.args and 'message' in request.args:
input = request.args.get('message')
rtrn = {'output':'hi %s(get)'%(input)}
return (json.dumps(rtrn), 200, headers)
elif request_json and 'message' in request_json:
input = request_json['message']
rtrn = {'output':'hi %s(post)'%(input)}
return (json.dumps(rtrn), 200, headers)
else:
rtrn = {'output':'hi (no args)'}
return (json.dumps(rtrn), 200, headers)
Für nicht standardmäßige Module müssen Sie die Datei request.txt erstellen. In diesem Fall benötigen Sie sie jedoch nicht, da es sich nur um json handelt.
Recommended Posts