C# 我的HTTP触发Azure函数如何处理请求';直接传递给Run方法的参数?
我有以下由HTTP调用触发的Azure函数:C# 我的HTTP触发Azure函数如何处理请求';直接传递给Run方法的参数?,c#,azure-functions,C#,Azure Functions,我有以下由HTTP调用触发的Azure函数: public static class MyAzureFunction { [FunctionName("api/v1/resource/")] public static async Task Run([HttpTrigger(AuthorizationLevel.Function, "get")]HttpRequestMessage request, ILogger logger) { // Extract
public static class MyAzureFunction
{
[FunctionName("api/v1/resource/")]
public static async Task Run([HttpTrigger(AuthorizationLevel.Function, "get")]HttpRequestMessage request, ILogger logger)
{
// Extract query string params from the request...
}
}
我希望将参数自动传递给Run方法,与ASP.NET Core Web API相同,而不必从请求本身提取参数并对其进行解析
下面是我想要得到的一个例子:
[FunctionName("api/v1/resource/{resourceId}")]
public static async Task Run([HttpTrigger(AuthorizationLevel.Function, "get")]HttpRequestMessage request, ILogger logger, int resourceId)
{
// ...
}
或者,在发布帖子时:
[FunctionName("api/v1/resource/")]
public static async Task Run([HttpTrigger(AuthorizationLevel.Function, "post")]HttpRequestMessage request, ILogger logger, [FromBody] SomeEntityModel entityModel)
{
// ...
}
参考文献
对于GET,您可以使用触发器上的Route
属性为函数设置路由模板
定义路由模板,控制函数响应的请求URL。如果未提供,则默认值为
这允许函数代码支持地址中的参数,如{resourceId}
您可以在参数中使用任何Web API路由约束
比如说
Route = "v1/resource/{resourceId:int}"
默认情况下,所有函数路由都以api作为前缀
下面将使用带约束的参数
[FunctionName("MyFunctionName")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = "v1/resource/{resourceId:int}")]
HttpRequestMessage request,
ILogger logger,
int resourceId) {
// ...
}
到目前为止,我还没有找到有关使用FromBody
属性的详细信息,但下面的引文似乎很有成效
对于C#和F#函数,可以将触发器输入的类型声明为HttpRequestMessage
或自定义类型。如果选择HttpRequestMessage
,则可以完全访问请求对象对于自定义类型,运行时尝试解析JSON请求主体以设置对象属性。
注意:强调我的
应该包括哪些
[FunctionName("MyPOSTFunction")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = "v1/resource/" )]
SomeEntityModel entityModel,
ILogger logger) {
// ...
}
快看一下这个。它使用路由模板解决GET问题,但位于配置文件中。。我还在查电话POST@Nkosi哦,太好了!我还以为我看过医生。。。一旦你发布了答案,我会将其标记为已接受。在重读之后,这篇文章看起来可能也会被覆盖。上一个例子的主要问题是,如果一个必需的json字段未被解析,自动绑定不会引发任何异常。。。程序只是将其登录并进一步工作,当它应该在根本原因上返回错误响应时抛出异常。。。