Allows Express usage with Azure Function
Connect your Express application to an Azure Function handler, and make seamless usage of all middlewares you are already familiar with.
In your index.js
:
const createHandler = require("azure-function-express").createHandler;
const express = require("express");
// Create express app as usual
const app = express();
app.get("/api/:foo/:bar", (req, res) => {
res.json({
foo : req.params.foo,
bar : req.params.bar
});
});
// Binds the express app to an Azure Function handler
module.exports = createHandler(app);
Make sure you are binding req
and res
in your function.json
:
{
"bindings": [{
"authLevel" : "anonymous",
"type" : "httpTrigger",
"direction" : "in",
"name" : "req",
"route" : "foo/{bar}/{id}"
}, {
"type" : "http",
"direction" : "out",
"name" : "res"
}]
}
To allow Express handles all HTTP routes itself you may set a glob star route in a single root function.json
:
{
"bindings": [{
"authLevel" : "anonymous",
"type" : "httpTrigger",
"direction" : "in",
"name" : "req",
"route" : "{*segments}"
}, {
"type" : "http",
"direction" : "out",
"name" : "res"
}]
}
Note that segments
is not used and could be anything. See Azure Function documentation.
All examples here.
All native Azure Functions context properties, except done
, are exposed through req.context
.
As en example, you can log using:
app.get("/api/hello-world", (req, res) => {
req.context.log({ hello: "world" });
...
});
Supported Node version are:
- Node 6.11.2 (first node version supported by Azure Functions)
- Node 8 (LTS)
- Node 10
Azure Functions runtime v1 and v2 beta are both supported.
Apache 2.0 © Yves Merlicco