使用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属性?。
我在Google上找不到如何执行此操作。我假定存在内置绑定,因为执行GET时可以指定是否要JSON或XML。我想反过来做同样的事情,并让框架处理,以防他们发布JSON或XML。
有没有一种方法可以自动执行此操作,或者我必须开始在HttpRequest中浏览并反序列化内容?
我发现您可以将HttpRequest req
替换为Kitten kitten
,它将进行模型绑定,但是我需要保持对HttpRequest
的访问权限,以便能够读取一些自定义身份验证标头。
有没有办法让我自己做到这两个?检查它们是否发送了JSON或XML并编写我自己的代码来进行模型绑定是一件很痛苦的事情,以便我可以检索http上下文。