c# - 我的 HTTP 触发 Azure 函数如何将请求的参数直接传递给 Run 方法?
问题描述
我有以下由 HTTP 调用触发的 Azure 函数:
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)
{
// ...
}
或者,在进行 POST 时:
[FunctionName("api/v1/resource/")]
public static async Task Run([HttpTrigger(AuthorizationLevel.Function, "post")]HttpRequestMessage request, ILogger logger, [FromBody] SomeEntityModel entityModel)
{
// ...
}
解决方案
参考Azure Functions HTTP 触发器和绑定:自定义 HTTP 终结点
对于 GET,您可以使用Route
触发器上的属性属性为函数设置路由模板
定义路由模板,控制您的函数响应的请求 URL。如果没有提供,则默认值为
<functionname>
这允许函数代码支持地址中的参数,例如{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) {
// ...
}
推荐阅读
- ios - Unexpectedly found nil while assigning TO an optional
- python - 如何根据同一列中的值更改熊猫数据库列中的值?
- json - JSON property of Enum type does not like `null` check
- oauth-2.0 - how to create a oauth client id for gcp programmatically
- c++ - xtensor - Tensor wrapper raises trivial_assigner error during runtime
- javascript - 在 React 中禁用 DIV onClick 的最佳方法
- excel - Moving location of pivot table(s)
- jsf - 分组 p:picklist 元素,如 html
- java - 如何在 RxJava Observable 中更新数据库?
- python - AttributeError:类型对象'ClassName'没有属性'object'