能否创建使用application/octet-stream的Azure Functions HTTP触发器?
可以创建处理application/octet-stream的Azure Functions HTTP触发器吗?
当然可以,Azure Functions HTTP触发器本身并不限制请求的Content-Type,你只需要在函数代码中调整请求内容的处理逻辑,就能适配application/octet-stream类型的二进制流请求。
具体实现要点:
- 直接读取原始二进制内容:跳过默认的JSON解析逻辑,直接读取请求的原始字节流。不同语言的实现方式略有差异:
- C#:通过
await req.Content.ReadAsByteArrayAsync()获取二进制数据 - Python:通过
await req.get_body()获取二进制数据
- C#:通过
- 按需设置响应类型:如果需要返回二进制格式的响应,记得将响应的
Content-Type指定为application/octet-stream
示例代码(C#)
[FunctionName("OctetStreamHandler")] public static async Task<HttpResponseMessage> Run( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequestMessage req, ILogger log) { log.LogInformation("Handling octet stream request"); byte[] binaryContent = await req.Content.ReadAsByteArrayAsync(); // 在这里添加二进制内容的处理逻辑,比如写入存储、解析数据等 return new HttpResponseMessage(HttpStatusCode.OK) { Content = new ByteArrayContent(binaryContent), Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream") }; }
示例代码(Python)
import azure.functions as func def main(req: func.HttpRequest) -> func.HttpResponse: import logging logging.info("Handling octet stream request") binary_content = req.get_body() # 在这里添加二进制内容的处理逻辑 return func.HttpResponse(binary_content, mimetype="application/octet-stream")
内容的提问来源于stack exchange,提问作者StavreskiM
相关产品推荐
相关产品推荐

