deno/std/http
2020-06-03 22:32:27 -04:00
..
testdata fix(std/http/file_server): args handling only if invoked directly (#5989) 2020-06-03 13:48:03 -04:00
_io.ts fix(std/http): Don't use assert() for user input validation (#6092) 2020-06-03 22:32:27 -04:00
_io_test.ts fix(std/http): Don't use assert() for user input validation (#6092) 2020-06-03 22:32:27 -04:00
_mock_conn.ts BREAKING(std): reorganization (#5087) 2020-05-09 08:34:47 -04:00
cookie.ts Miscellaneous documentation and spelling improvements (#5527) 2020-05-17 19:24:39 +02:00
cookie_test.ts fix(std/http): verify cookie name & update SameSite type (#4685) 2020-04-10 10:12:42 -04:00
file_server.ts fix(std/http/file_server): args handling only if invoked directly (#5989) 2020-06-03 13:48:03 -04:00
file_server_test.ts fix(std/http/file_server): args handling only if invoked directly (#5989) 2020-06-03 13:48:03 -04:00
http_bench.ts Update to Prettier 2 and use ES Private Fields (#4498) 2020-03-28 13:03:49 -04:00
http_status.ts feat(std/http) support code 103 Early Hints (#6021) 2020-06-01 11:10:17 -04:00
mod.ts feat: Add missing mod.ts files in std (#3509) 2019-12-20 15:21:30 -05:00
racing_server.ts BREAKING(std): reorganization (#5087) 2020-05-09 08:34:47 -04:00
racing_server_test.ts Unstable methods should not appear in runtime or d.ts (#4957) 2020-04-30 11:23:40 -04:00
README.md improve docs (#5873) 2020-05-26 10:09:47 -04:00
server.ts doc: improve documentation for consuming request body (#5771) 2020-05-28 13:36:18 -04:00
server_test.ts Use ts-expect-error instead of ts-ignore. (#5869) 2020-05-26 10:02:16 -04:00

http

import { serve } from "https://deno.land/std/http/server.ts";
const server = serve({ port: 8000 });
console.log("http://localhost:8000/");
for await (const req of server) {
  req.respond({ body: "Hello World\n" });
}

File Server

A small program for serving local files over HTTP

deno run --allow-net --allow-read https://deno.land/std/http/file_server.ts
> HTTP server listening on http://0.0.0.0:4500/

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.