Azure Functions V4 adapter for Hono. Run Hono on Azure Functions.
npm i @marplex/hono-azurefunc-adapter
The adapter exposes an handler that converts between standard web Request/Response (used by Hono) and HttpRequest/HttpResponse (used by Azure Functions). This handler is then called by the function http trigger.
//app.ts
import { Hono } from "hono";
const app = new Hono();
...
export default app
//httpTrigger.ts
import honoApp from "./app";
import { azureHonoHandler } from "@marplex/hono-azurefunc-adapter";
import { app } from "@azure/functions";
app.http("httpTrigger", {
methods: [
"GET",
"POST",
"DELETE",
"HEAD",
"PATCH",
"PUT",
"OPTIONS",
"TRACE",
"CONNECT",
],
authLevel: "anonymous",
route: "{*proxy}",
handler: azureHonoHandler(honoApp.fetch),
});
There are some limitations and other things you should keep in mind when running Hono inside Azure Functions.
The default Azure Functions route prefix is /api
. Be sure to start all your Hono routes with /api
or change the default Azure Functions route prefix in host.json
{
"extensions": {
"http": {
"routePrefix": ""
}
}
}
In Node <=18 environments, if you are using hono/bearer-auth
or any other library that uses crypto, be sure to define global.crypto = require("crypto");
before registering the http trigger.
Azure Functions does not expose any signal or event for listening to http request interruptions. c.req.raw.signal
is useless and its never aborted.
- SSE (streaming response)