在 python 中的 azure 函数应用程序的 `req.get_json()` 中没有得到 json 输入
Not getting json input in `req.get_json()` in azure function app in python
我之前在 azure 函数应用程序中创建了几个 api。我曾使用 req.get_json() 来获取 json 输入参数,但突然停止了。 req.get_json() 的值给我错误 ValueError: HTTP request does not contain valid JSON data
。我尝试了以下基本代码示例。它给了我同样的错误。
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')
if name:
return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.")
else:
return func.HttpResponse(
"This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
status_code=200
)
curl 命令:
curl --location --request POST 'http://localhost:7071/api/dev-test' \
> --header 'Content-Type: application/json' \
> --data-raw '{"name":"test-dev"}'
curl 的输出:
This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
这可能是由于在复制时引入了额外的字符。您可以删除该行参数并手动输入请求参数。应该没有问题了。
手动输入这一行:
--data-raw '{"name":"test-dev"}'
我以前遇到过同样的问题,我认为这主要是邮递员的问题。您可以从市场下载 postcode vscode
扩展并测试使用它。
在 curl
命令中,您可能还会遇到上面 Frank
提到的问题。要消除该问题,您可以改为创建一个 JSON
文件并将您的 json 数据粘贴到其中,然后尝试像这样使用 curl:curl --location --request POST "http://localhost:7071/api/dev-test" --header 'Content-Type: application/json' -d @test.json
其中 test.json
将包含您的 json 数据。它可能有效也可能无效。
我之前在 azure 函数应用程序中创建了几个 api。我曾使用 req.get_json() 来获取 json 输入参数,但突然停止了。 req.get_json() 的值给我错误 ValueError: HTTP request does not contain valid JSON data
。我尝试了以下基本代码示例。它给了我同样的错误。
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')
if name:
return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.")
else:
return func.HttpResponse(
"This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
status_code=200
)
curl 命令:
curl --location --request POST 'http://localhost:7071/api/dev-test' \
> --header 'Content-Type: application/json' \
> --data-raw '{"name":"test-dev"}'
curl 的输出:
This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
这可能是由于在复制时引入了额外的字符。您可以删除该行参数并手动输入请求参数。应该没有问题了。
手动输入这一行:
--data-raw '{"name":"test-dev"}'
我以前遇到过同样的问题,我认为这主要是邮递员的问题。您可以从市场下载 postcode vscode
扩展并测试使用它。
在 curl
命令中,您可能还会遇到上面 Frank
提到的问题。要消除该问题,您可以改为创建一个 JSON
文件并将您的 json 数据粘贴到其中,然后尝试像这样使用 curl:curl --location --request POST "http://localhost:7071/api/dev-test" --header 'Content-Type: application/json' -d @test.json
其中 test.json
将包含您的 json 数据。它可能有效也可能无效。