function Deno.serve
serve(handler: ServeHandler<Deno.NetAddr>): HttpServer<Deno.NetAddr>
Serves HTTP requests with the given handler.
The below example serves with the port `8000` on hostname `"127.0.0.1"`.
```ts
Deno.serve((_req) => new Response("Hello, world"));
```
handler: ServeHandler<Deno.NetAddr>
serve(options: ServeUnixOptions,handler: ServeHandler<Deno.UnixAddr>,): HttpServer<Deno.UnixAddr>
Serves HTTP requests with the given option bag and handler.
You can specify the socket path with `path` option.
```ts
Deno.serve(
{ path: "path/to/socket" },
(_req) => new Response("Hello, world")
);
```
You can stop the server with an `AbortSignal`. The abort signal
needs to be passed as the `signal` option in the options bag. The server
aborts when the abort signal is aborted. To wait for the server to close,
await the promise returned from the `Deno.serve` API.
```ts
const ac = new AbortController();
const server = Deno.serve(
{ signal: ac.signal, path: "path/to/socket" },
(_req) => new Response("Hello, world")
);
server.finished.then(() => console.log("Server closed"));
console.log("Closing server...");
ac.abort();
```
By default `Deno.serve` prints the message
`Listening on path/to/socket` on listening. If you like to
change this behavior, you can specify a custom `onListen` callback.
```ts
Deno.serve({
onListen({ path }) {
console.log(`Server started at ${path}`);
// ... more info specific to your server ..
},
path: "path/to/socket",
}, (_req) => new Response("Hello, world"));
```
options: ServeUnixOptions
handler: ServeHandler<Deno.UnixAddr>
serve(options: ServeTcpOptions | (ServeTcpOptions & TlsCertifiedKeyPem),handler: ServeHandler<Deno.NetAddr>,): HttpServer<Deno.NetAddr>
Serves HTTP requests with the given option bag and handler.
You can specify an object with a port and hostname option, which is the
address to listen on. The default is port `8000` on hostname `"0.0.0.0"`.
You can change the address to listen on using the `hostname` and `port`
options. The below example serves on port `3000` and hostname `"127.0.0.1"`.
```ts
Deno.serve(
{ port: 3000, hostname: "127.0.0.1" },
(_req) => new Response("Hello, world")
);
```
You can stop the server with an `AbortSignal`. The abort signal
needs to be passed as the `signal` option in the options bag. The server
aborts when the abort signal is aborted. To wait for the server to close,
await the promise returned from the `Deno.serve` API.
```ts
const ac = new AbortController();
const server = Deno.serve(
{ signal: ac.signal },
(_req) => new Response("Hello, world")
);
server.finished.then(() => console.log("Server closed"));
console.log("Closing server...");
ac.abort();
```
By default `Deno.serve` prints the message
`Listening on http://:/` on listening. If you like to
change this behavior, you can specify a custom `onListen` callback.
```ts
Deno.serve({
onListen({ port, hostname }) {
console.log(`Server started at http://${hostname}:${port}`);
// ... more info specific to your server ..
},
}, (_req) => new Response("Hello, world"));
```
To enable TLS you must specify the `key` and `cert` options.
```ts
const cert = "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n";
const key = "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n";
Deno.serve({ cert, key }, (_req) => new Response("Hello, world"));
```
options: ServeTcpOptions | (ServeTcpOptions & TlsCertifiedKeyPem)
handler: ServeHandler<Deno.NetAddr>
serve(options: ServeUnixOptions & ServeInit<Deno.UnixAddr>): HttpServer<Deno.UnixAddr>
Serves HTTP requests with the given option bag.
You can specify an object with the path option, which is the
unix domain socket to listen on.
```ts
const ac = new AbortController();
const server = Deno.serve({
path: "path/to/socket",
handler: (_req) => new Response("Hello, world"),
signal: ac.signal,
onListen({ path }) {
console.log(`Server started at ${path}`);
},
});
server.finished.then(() => console.log("Server closed"));
console.log("Closing server...");
ac.abort();
```
options: ServeUnixOptions & ServeInit<Deno.UnixAddr>
serve(options: (ServeTcpOptions | (ServeTcpOptions & TlsCertifiedKeyPem)) & ServeInit<Deno.NetAddr>): HttpServer<Deno.NetAddr>
Serves HTTP requests with the given option bag.
You can specify an object with a port and hostname option, which is the
address to listen on. The default is port `8000` on hostname `"0.0.0.0"`.
```ts
const ac = new AbortController();
const server = Deno.serve({
port: 3000,
hostname: "127.0.0.1",
handler: (_req) => new Response("Hello, world"),
signal: ac.signal,
onListen({ port, hostname }) {
console.log(`Server started at http://${hostname}:${port}`);
},
});
server.finished.then(() => console.log("Server closed"));
console.log("Closing server...");
ac.abort();
```
options: (ServeTcpOptions | (ServeTcpOptions & TlsCertifiedKeyPem)) & ServeInit<Deno.NetAddr>