如何在 python 中传递本地主机 url 中的 json 数据?

How to pass json data in localhost url in python?

这是HttpTrigger函数。我想在本地主机 (http://localhost:7071/api/HttpTrigger1) 中传递二进制图像作为附加到参数,如下所示 例子 http://localhost:7071/api/HttpTrigger1//9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAYGBgYHBgcICAc......

我的代码

import base64
import numpy as np
import cv2 as cv


def main(req: func.HttpRequest) -> func.HttpResponse:
    base_64_image_bytes = req.get_body()
    image_bytes = base64.b64decode(base_64_image_bytes)
    img_nparr = np.frombuffer(image_bytes, dtype=np.uint8)
    image = cv.imdecode(img_nparr, cv.IMREAD_COLOR)
    cv.imwrite(TEMP_IMAGE_FILENAME, image)
    return func.HttpResponse("Done", status_code=200)

但是 base_64_image_bytes 是空的。请帮帮我....

对于这个问题,您不能将二进制文件放在请求url路径中。如果你想把二进制文件作为请求的参数url,你需要使用url,比如:http://localhost:7071/api/HttpTrigger1?binary=xxxxx。然后你可以在你的函数中使用代码获取参数binary

def main(req: func.HttpRequest) -> func.HttpResponse:
    binary = req.params.get('binary')

如果您使用问题中提到的 url:http://localhost:7071/api/HttpTrigger1//9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAYGBgYHBgcICAc.......,它无法触发您的功能,因为您的功能请求 url 是 http://localhost:7071/api/HttpTrigger1 但是不是 http://localhost:7071/api/HttpTrigger1//9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAYGBgYHBgcICAc........

您还可以将二进制文件放入请求的请求正文中。如果是这样,您需要使用“Post”方法来请求您的函数,而不是“Get”方法。例如,您使用“Post”方法请求函数,请求正文如下:

{
  "binary":"xxxxxx"
}

然后您可以使用如下代码在您的函数中获取二进制文件:

req_body = req.get_json()
binary = req_body.get('binary')