Azure功能压缩了POST主体

时间:2017-08-25 18:27:37

标签: node.js azure azure-functions

我有带有Http触发器的nod​​ejs azure函数。我正在使用POST方法并将body发送到azure函数。由于身体很大,所以使用gzip进行压缩。

我在azure函数中收到请求,内容编码标题是' gzip'。我试图使用nodejs

zlib.gunzip(req.body,...) 

并且它引发了错误

  

错误:标题检查不正确

2 个答案:

答案 0 :(得分:4)

对于JavaScript函数,streaming is not supported和函数运行时提供请求主体而不是请求对象。 C#函数没有特殊处理,因此您可以尝试使用C#函数。

这是一个C#函数,它解压缩gzip请求体以供您参考。

using System.Net;
using System.IO.Compression;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    var inputStream = await req.Content.ReadAsStreamAsync();
    string decompressedReqBody = string.Empty;
    using (GZipStream decompressionStream = new GZipStream(inputStream, CompressionMode.Decompress))
    {
        using (StreamReader sr = new StreamReader(decompressionStream))
        {
           decompressedReqBody = sr.ReadToEnd();
           log.Info(decompressedReqBody);
        }
    }
    return req.CreateResponse(HttpStatusCode.OK, decompressedReqBody);
} 

答案 1 :(得分:-1)

最近遇到类似问题。我们犯的错误是设置错误的Content-Type标头。将Content-Typeapplication/octet-stream更改为application/json就可以了。