从 Angular 调用 Python 云函数
Call Python cloud function from Angular
我已经将用 Python 编写的云函数部署到 GCP。
from flask import escape
import functions_framework
@functions_framework.http
def hello_http(request):
"""HTTP Cloud Function.
Args:
request (flask.Request): The request object.
<https://flask.palletsprojects.com/en/1.1.x/api/#incoming-request-data>
Returns:
The response text, or any set of values that can be turned into a
Response object using `make_response`
<https://flask.palletsprojects.com/en/1.1.x/api/#flask.make_response>.
"""
request_json = request.get_json(silent=True)
request_args = request.args
if request_json and 'name' in request_json:
name = request_json['name']
elif request_args and 'name' in request_args:
name = request_args['name']
else:
name = 'World'
return 'Hello {}!'.format(escape(name))
例如,我可以使用 axios
从 angular 调用此函数。但是,没有数据发送通过。如果我在 python 函数中打印 request.data
,它会打印为空。另外 request_json
总是 None
.
axios.post('https://projektid.cloudfunctions.net/hello_http', {
data: 123
})
.then((result: any) => {
console.log(result)
})
.catch((err) => {
console.log('ERROR', err)
});
编辑:
如果我像这样从 Python 调用它,它工作正常并传递参数:
import requests
r = requests.post('https://projektid.cloudfunctions.net/hello_http', json={'data': 123})
print(r.text)
如何从 angular/typescript 正确地将数据传递给此 python 函数?
如果您从本地主机调用您的函数,请确保您正在处理 cors 请求。您可以在 the documentation.
中找到更多相关信息
我已经将用 Python 编写的云函数部署到 GCP。
from flask import escape
import functions_framework
@functions_framework.http
def hello_http(request):
"""HTTP Cloud Function.
Args:
request (flask.Request): The request object.
<https://flask.palletsprojects.com/en/1.1.x/api/#incoming-request-data>
Returns:
The response text, or any set of values that can be turned into a
Response object using `make_response`
<https://flask.palletsprojects.com/en/1.1.x/api/#flask.make_response>.
"""
request_json = request.get_json(silent=True)
request_args = request.args
if request_json and 'name' in request_json:
name = request_json['name']
elif request_args and 'name' in request_args:
name = request_args['name']
else:
name = 'World'
return 'Hello {}!'.format(escape(name))
例如,我可以使用 axios
从 angular 调用此函数。但是,没有数据发送通过。如果我在 python 函数中打印 request.data
,它会打印为空。另外 request_json
总是 None
.
axios.post('https://projektid.cloudfunctions.net/hello_http', {
data: 123
})
.then((result: any) => {
console.log(result)
})
.catch((err) => {
console.log('ERROR', err)
});
编辑: 如果我像这样从 Python 调用它,它工作正常并传递参数:
import requests
r = requests.post('https://projektid.cloudfunctions.net/hello_http', json={'data': 123})
print(r.text)
如何从 angular/typescript 正确地将数据传递给此 python 函数?
如果您从本地主机调用您的函数,请确保您正在处理 cors 请求。您可以在 the documentation.
中找到更多相关信息