【发布时间】:2020-01-17 15:27:10
【问题描述】:
我有一个烧瓶 api,它期望在 Avro 中发出一个发布请求。问题是我不确定如何发送 Avro 请求来测试它。 api使用fastavro.reader(io.BytesIO(request.data))读取数据
我尝试过使用邮递员: 在将 Content-Type 定义为“avro/binary”的标头中 但是看起来不可能 https://github.com/postmanlabs/postman-app-support/issues/4435
我也试过 curl:
curl -X POST -H "Content-Type: avro/binary" --data "{"city": "ALA",
"number_of_points": 42, "transport": "CAR", "subtype": "PURCHASE"}"
"http://localhost:8080/invocations"
然而 fastavro 返回以下错误:
文件“fastavro/_read.pyx”,第 725 行,在 fastavro._read.file_reader 中。init
ValueError: 无法读取标头 - 它是 avro 文件吗?
资源:
【问题讨论】:
-
您是否在您链接的那个问题线程中按照reply 尝试过
-H "Content-Type: application/vnd.kafka.avro.v2+json"?编辑:事实上,我进一步阅读,有人建议这不适用于“通用 avro 有效载荷”——尽管值得一试。 -
是的,我试过了。同样的错误:ValueError: cannot read header - 它是 avro 文件吗?
-
目标实际上是上传
avro文件,而不是将有效负载指定为curl 的--data参数,还是等价的?--dataarg 是否仅用于您的示例,或者您可以以这种格式指定它是否至关重要? -
这只是示例。这就是我的计划所期望的。如何上传 avro 文件?
-
另外,您是否可以控制 API 代码...澄清一下,我已经生成了一个带有 the fastavro example code 的文件,这导致了一个文件 like this。这就是你需要提供 API 的东西吗,如果是的话,我有答案。