gpt4 book ai didi

c# - 如何通过 Postman 发布到 Azure 函数(HTTP 触发器)?

转载 作者:行者123 更新时间:2023-12-02 05:54:09 25 4
gpt4 key购买 nike

我已经利用 HTTP 触发器实现了一个 Azure 函数,并与 SendGrid 集成。预期的操作是通过 HTTP 将数据传递到 Azure Function,并通过电子邮件将该内容发送到指定的收件箱。我的 Azure Function 在 Azure 门户中测试成功。换句话说,当我提交此内容时,收件箱会收到预期的电子邮件:

enter image description here

但是,当我尝试通过 Postman 发送到 Azure Function 时,我收到状态 400“错误请求 - 无效主机名”。我尝试利用我的功能键,将键作为 Postman 中 URI 中的参数传递,或者在 header 中作为“x-functions-key”传递。状态始终为 400。我通过单击“获取函数 URL”从 Azure 门户获取要发布的 URL。作为替代方案,我还尝试发布到符合以下条件的 URL:

enter image description here

这是我的函数绑定(bind)(function.json):

{
"bindings": [
{
"authLevel": "function",
"name": "req",
"type": "httpTrigger",
"direction": "in",
"methods": [
"get",
"post"
]
},
{
"type": "sendGrid",
"name": "$return",
"direction": "out",
"apiKey": "SendGridKey",
"from": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="33565e525a5f73565e525a5f1d505c5e" rel="noreferrer noopener nofollow">[email protected]</a>",
"to": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c7a2aaa6aeab87a2aaa6aeabe9a4a8aa" rel="noreferrer noopener nofollow">[email protected]</a>"
}
]
}

这是函数逻辑(run.csx):

#r "Newtonsoft.Json"
#r "SendGrid"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using SendGrid.Helpers.Mail;

public static SendGridMessage Run(Email req, ILogger log)
{
Guid Id = Guid.NewGuid();

log.LogInformation($"Email generated from websitename via Azure Function. Email ID: {Id}");

SendGridMessage message = new SendGridMessage()
{
Subject = $"From wesbitename. Subj: {req.Subject.Substring(0, 20)}"
};


message.AddContent("text/plain", $"Subject: {req.Subject} \n \n" + $"{req.Content} \n \n" + $"From: {req.CustomerName}, {req.CustomerEmail}");
return message;
}

public class Email
{
public string EmailId { get; set; }
public string Subject { get; set; }
public string Content { get; set; }
public string CustomerName { get; set; }
public string CustomerEmail { get; set; }
}

如何通过 HTTP POST 到 Azure Function?如何解决 400 错误? 谢谢!

如需了解更多信息,我也通过 Twitter 寻求帮助:https://twitter.com/devbogoodski/status/1410702335303581697

最佳答案

由于您使用的是 HTTP 触发器,请确保您的网址采用以下格式

http://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>

添加以下 header :

x-functions-key: A function-specific API key is required. Default if specific is not provided
Content-Type: application/json

然后将您的 json 对象添加到正文

关于c# - 如何通过 Postman 发布到 Azure 函数(HTTP 触发器)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68217048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com