在 Azure Functions (NodeJS) 中处理多个 HTTP 方法的正确方法是什么
What is the correct way to handle multiple HTTP Methods in Azure Functions (NodeJS)
在 Azure Functions 中构建应用程序时,您可以指定 function.json
中接受的 HTTP 方法
给定一个 API,您可以在(GET、PUT POST 等)上执行多个函数,创建该函数或多个函数的最佳方法是什么。
将需要共享逻辑和库,因此我正在寻找一种模式,可以在单个 class 中启用所有方法,但不确定您将如何定义它function.json 这样每个 HTTP 方法都可以有自己的入口点。
另一种选择是创建一个基本上选择方法和 class 该函数的函数,但这似乎是一些中间件开销,我相信可以用更好的方式处理。
即我不认为我应该为我为其创建函数的每个对象都这样做,并且必须有更好的模式。
async HandleRequest(){
return validateJwt(function(context,req){
if(req.method === 'GET'){
}
else if(req.method === 'POST'){
}
else if(req.method === 'DELETE'){
}
else if(req.method === 'PUT'){
}
else if(req.method === 'PATCH'){
}
});
}
您的 function.json 应该是这样的:
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req"
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
}
默认情况下,如果未指定方法,则该函数接受所有方法。
所以最好的方法是使用多个函数。
您可以在function.json文件中通过路由和方法定义函数。
看例子。
注意route:family/{id:int}
这是该函数将处理的唯一路径。您还放入 "methods": ["get"]
以将函数限制为 GET。
为每个方法创建一个函数,以提高代码的可维护性。然后,在我拥有一个执行 CRUD 操作(包括管理与数据库的连接)的通用 FamilyHandler Class 之前,我使用了一些中间件功能(执行身份验证和错误处理)。
{
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": ["get"],
"route": "family/{id:int}"
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
}
我在以下文档中发现了这一点 https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-http-webhook-trigger?tabs=javascript
在 Azure Functions 中构建应用程序时,您可以指定 function.json
中接受的 HTTP 方法给定一个 API,您可以在(GET、PUT POST 等)上执行多个函数,创建该函数或多个函数的最佳方法是什么。
将需要共享逻辑和库,因此我正在寻找一种模式,可以在单个 class 中启用所有方法,但不确定您将如何定义它function.json 这样每个 HTTP 方法都可以有自己的入口点。
另一种选择是创建一个基本上选择方法和 class 该函数的函数,但这似乎是一些中间件开销,我相信可以用更好的方式处理。
即我不认为我应该为我为其创建函数的每个对象都这样做,并且必须有更好的模式。
async HandleRequest(){
return validateJwt(function(context,req){
if(req.method === 'GET'){
}
else if(req.method === 'POST'){
}
else if(req.method === 'DELETE'){
}
else if(req.method === 'PUT'){
}
else if(req.method === 'PATCH'){
}
});
}
您的 function.json 应该是这样的:
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req"
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
}
默认情况下,如果未指定方法,则该函数接受所有方法。
所以最好的方法是使用多个函数。
您可以在function.json文件中通过路由和方法定义函数。 看例子。
注意route:family/{id:int}
这是该函数将处理的唯一路径。您还放入 "methods": ["get"]
以将函数限制为 GET。
为每个方法创建一个函数,以提高代码的可维护性。然后,在我拥有一个执行 CRUD 操作(包括管理与数据库的连接)的通用 FamilyHandler Class 之前,我使用了一些中间件功能(执行身份验证和错误处理)。
{
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": ["get"],
"route": "family/{id:int}"
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
}
我在以下文档中发现了这一点 https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-http-webhook-trigger?tabs=javascript