azure function app javascript 无法读取 Post 请求的正文
Posted
技术标签:
【中文标题】azure function app javascript 无法读取 Post 请求的正文【英文标题】:azure function app javascript can not read Post request's body 【发布时间】:2018-09-23 21:40:45 【问题描述】:我正在使用 Azure Function App 部署此示例代码:
FUNCTIONS_EXTENSION_VERSION=测试版
WEBSITE_NODE_DEFAULT_VERSION=6.5.0
index.js:
module.exports = function (context, req)
context.log('javascript HTTP trigger function processed a request.');
if (req.query.name || (req.body && req.body.name))
context.res =
// status: 200, /* Defaults to 200 */
body: "Hello " + (req.query.name || req.body.name)
;
else
context.res =
status: 400,
body: "Please pass a name on the query string or in the request body"
;
context.done(); ;
function.json:
"disabled": false, "bindings": [
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req"
,
"type": "http",
"direction": "out",
"name": "res"
]
在本地开发中,一切正常。
部署后,请求 POST 的主体为“未定义”
调用函数的简单请求: - 内容类型:应用程序/json
"name":"John"
日志:
method: 'POST',
url: '/api/MyHttpTrigger',
originalUrl: '/api/MyHttpTrigger',
headers:
connection: 'close',
'transfer-encoding': 'chunked',
accept: 'application/json, text/plain, */*',
authorization: 'Bearer------',
expect: '100-continue',
host: 'dev-we-function-test-api.azurewebsites.net',
'max-forwards': '10',
'user-agent': 'axios/0.16.2',
'x-client-ip': '52.143.137.149',
'x-client-port': '16079',
'request-context': 'appId=cid-v1:5443f5a3-02cd-43d3-90d6-1942e07580a1,roleName=Web',
'request-id': '|rtHs1.ca2e9979_1310.',
'x-ms-request-id': 'rtHs1',
'x-ms-request-root-id': '|rtHs1.ca2e9979_1310.',
'x-waws-unencoded-url': '/api/MyHttpTrigger?code=NhpwrmvOjo809ryOvkzbbBa9B1/Hqj18FoVw9faqq8eKSaoDk4oyeg==',
'client-ip': '52.143.137.149:16079',
'is-service-tunneled': '0',
'x-arr-log-id': 'c2b5dbe9-4193-4b81-821a-8ad2054a1203',
'disguised-host': 'dev-we-function-test-api.azurewebsites.net',
'x-site-deployment-id': 'dev-we-function-test-api',
'was-default-hostname': 'dev-we-function-test-api.azurewebsites.net',
'x-original-url': '/api/MyHttpTrigger?code=NhpwrmvOjo809ryOvkzbbBa9B1/Hqj18FoVw9faqq8eKSaoDk4oyeg==',
'x-forwarded-for': '52.143.137.149:16079',
'x-arr-ssl': '2048|256|C=US, S=Washington, L=Redmond, O=Microsoft Corporation, OU=Microsoft IT, CN=Microsoft IT TLS CA 4|CN=*.azurewebsites.net',
'x-forwarded-proto': 'https' ,
query:
code: 'NhpwrmvOjo809ryOvkzbbBa9B1/Hqj18FoVw9faqq8eKSaoDk4oyeg==' ,
params: ,
body: undefined
帮助....
【问题讨论】:
您使用的是V1还是V2的功能,您运行的是Windows还是Linux版本? 如果您使用的是 v2,您的WEBSITE_NODE_DEFAULT_VERSION
应用设置是什么意思?
是的,我正在使用 V2,WEBSITE_NODE_DEFAULT_VERSION=6.5.0。 (Linux版)
【参考方案1】:
重现我这边的错误。
已经做了一些测试来找出原因。
在 Windows 应用服务计划中有效。 在 linux 中,C#(csx) HttpTrigger 有效。 尽管应用设置中的默认值为 6.5.0,但发现节点版本为 8.9.0。用8.9.0在widows版本测试,也可以。因此,对于 linux 应用服务计划(预览版)中的 js 功能,从我的角度来看,请求正文要么丢失,要么无法解析。这似乎是linux版本的语言支持问题,因为整个部署是一个模板,并且没有关于json数据不支持作为请求体的提示。
更新
这个问题似乎解决了,在运行时 2.0.1.0 (beta) for linux 上测试。
【讨论】:
以上是关于azure function app javascript 无法读取 Post 请求的正文的主要内容,如果未能解决你的问题,请参考以下文章
azure functions 或 azure logic app 中是不是有任何触发 Azure File Share 的触发器?
从 Azure Function App 访问带有防火墙的 Azure Blob 存储
随机 Azure Function Apps 故障:超出主机阈值 [连接数]