Kzr*_*tof 3 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 query string params from the request...
}
}
Run Code Online (Sandbox Code Playgroud)
我希望将参数自动传递给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)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
或者,在做POST时:
[FunctionName("api/v1/resource/")]
public static async Task Run([HttpTrigger(AuthorizationLevel.Function, "post")]HttpRequestMessage request, ILogger logger, [FromBody] SomeEntityModel entityModel)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
对于GET,您可以使用Route触发器上的attribute属性为该函数设置路由模板
定义路由模板,控制您的函数响应的请求URL.如果没有提供,则为默认值
<functionname>
这允许功能代码支持地址中的参数,例如{resourceId}.
您可以将任何Web API Route Constraint与您的参数一起使用.
例如
Route = "v1/resource/{resourceId:int}"
Run Code Online (Sandbox Code Playgroud)
默认情况下,所有的功能路由前缀与API
以下使用带约束的参数
[FunctionName("MyFunctionName")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = "v1/resource/{resourceId:int}")]
HttpRequestMessage request,
ILogger logger,
int resourceId) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我还没有找到有关FromBody属性使用的详细信息,但以下引用似乎很有成效
对于C#和F#函数,您可以将触发器输入的类型声明
HttpRequestMessage为自定义类型或自定义类型.如果选择HttpRequestMessage,您将获得对请求对象的完全访问权限.对于自定义类型,运行时尝试解析JSON请求主体以设置对象属性.
注意:强调我的
哪个应该涵盖
[FunctionName("MyPOSTFunction")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = "v1/resource/" )]
SomeEntityModel entityModel,
ILogger logger) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1525 次 |
| 最近记录: |