mirror of
https://github.com/denoland/deno.git
synced 2024-11-01 09:24:20 -04:00
3ef34673c9
Due to structure of "Server" for each open connection there's a pending "read" op. Because connection owned by "Server" are not tracked, calling "Server.close()" doesn't close open connections. This commit introduces simple tracking of connections for server and ensures owned connections are closed on "Server.close()". |
||
---|---|---|
.. | ||
testdata | ||
cookie.ts | ||
cookie_test.ts | ||
file_server.ts | ||
file_server_test.ts | ||
http_bench.ts | ||
http_status.ts | ||
io.ts | ||
io_test.ts | ||
mock.ts | ||
mod.ts | ||
racing_server.ts | ||
racing_server_test.ts | ||
README.md | ||
server.ts | ||
server_test.ts |
http
import { serve } from "https://deno.land/std/http/server.ts";
const s = serve({ port: 8000 });
console.log("http://localhost:8000/");
for await (const req of s) {
req.respond({ body: "Hello World\n" });
}
File Server
A small program for serving local files over HTTP
deno --allow-net --allow-read https://deno.land/std/http/file_server.ts
> HTTP server listening on http://0.0.0.0:4500/
Cookie
Helper to manipulate Cookie
through ServerRequest
and Response
.
import { ServerRequest } from "https://deno.land/std/http/server.ts";
import { getCookies } from "https://deno.land/std/http/cookie.ts";
let request = new ServerRequest();
request.headers = new Headers();
request.headers.set("Cookie", "full=of; tasty=chocolate");
const cookies = getCookies(request);
console.log("cookies:", cookies);
// cookies: { full: "of", tasty: "chocolate" }
To set a Cookie
you can add CookieOptions
to properly set your Cookie
import { Response } from "https://deno.land/std/http/server.ts";
import { Cookie, setCookie } from "https://deno.land/std/http/cookie.ts";
let response: Response = {};
const cookie: Cookie = { name: "Space", value: "Cat" };
setCookie(response, cookie);
const cookieHeader = response.headers.get("set-cookie");
console.log("Set-Cookie:", cookieHeader);
// Set-Cookie: Space=Cat
Deleting a Cookie
will set its expiration date before now. Forcing the browser
to delete it.
import { Response } from "https://deno.land/std/http/server.ts";
import { delCookie } from "https://deno.land/std/http/cookie.ts";
let response: Response = {};
delCookie(response, "deno");
const cookieHeader = response.headers.get("set-cookie");
console.log("Set-Cookie:", cookieHeader);
// Set-Cookie: deno=; Expires=Thus, 01 Jan 1970 00:00:00 GMT
Note: At the moment multiple Set-Cookie
in a Response
is not handled.