使用GET,我可以在函数定义中添加一个参数:
[FunctionName("GetKittenById")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = "GetKittenById/{kittenId}")] HttpRequest req,
string kittenId,
ILogger log) { ... }
我想用POST做同样的事情。但是,如果我添加一个参数并执行此操作:
[FunctionName("CreateKitten")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "POST", Route = "CreateKitten")] HttpRequest req,
Kitten kitten,
ILogger log) { ... }
然后我的函数在POST时发出错误。
[07/03/2019 16:17:00]发生了未处理的主机错误。 [07/03/2019 16:17:00] Microsoft.Azure.WebJobs.Host: 无法从Azure WebJobs SDK调用“CreateKitten”。是否缺少Azure WebJobs SDK属性?
我在谷歌上找不到如何做到这一点。我假设有内置绑定,因为当你执行GET时,你可以指定是否需要JSON或XML。我想反过来做同样的事情,让框架处理它,以防他们发布JSON或XML。
有没有办法自动执行此操作,还是我必须开始在HttpRequest和反序列化内容?
我发现你可以用HttpRequest req
替换Kitten kitten
并且它将进行模型绑定,但我需要继续访问HttpRequest
以便能够读取一些自定义身份验证标头。
有没有办法在不滚动我自己的情况下获得这两个?检查他们是否发送了JSON或XML并编写我自己的代码来进行模型绑定是一件痛苦的事情,这样我才能检索到http上下文。