std/http
2021-05-25 13:05:32 +09:00
..
testdata feat(http/file_server): support do not show dotfiles (#690) 2021-02-02 14:36:52 -05:00
_io_test.ts Fix test after Headers API was made spec compliant (#865) 2021-04-20 12:19:18 -04:00
_io.ts feat(http): allow custom response code (#855) 2021-05-11 17:05:00 +09:00
_mock_conn.ts chore: remove Promise<void> return type annotation (#819) 2021-04-05 07:49:05 -04:00
bench.ts update copyright to 2021 (denoland/deno#9081) 2021-02-01 10:46:59 +00:00
cookie_test.ts refactor: fix codes to pass no-unused-vars lint (#764) 2021-03-02 15:31:37 +09:00
cookie.ts ref(http): Remove Cookie from validation function name (#893) 2021-05-06 08:50:40 -04:00
file_server_test.ts fix(http/file_server): keep url and name consistent (#908) 2021-05-10 09:29:26 -04:00
file_server.ts fix(http/file_server): keep url and name consistent (#908) 2021-05-10 09:29:26 -04:00
http_status.ts update copyright to 2021 (denoland/deno#9081) 2021-02-01 10:46:59 +00:00
mod.ts update copyright to 2021 (denoland/deno#9081) 2021-02-01 10:46:59 +00:00
racing_server_test.ts chore: remove Promise<void> return type annotation (#819) 2021-04-05 07:49:05 -04:00
racing_server.ts chore: remove Promise<void> return type annotation (#819) 2021-04-05 07:49:05 -04:00
README.md docs(hash,http): add module descriptions (#934) 2021-05-25 13:05:32 +09:00
server_test.ts fix: bad assumption about tls in server tests (#915) 2021-05-11 22:33:28 +02:00
server.ts feat(http): allow custom response code (#855) 2021-05-11 17:05:00 +09:00
test.ts update copyright to 2021 (denoland/deno#9081) 2021-02-01 10:46:59 +00:00

http

http is a module to provide HTTP client and server implementations.

import { serve } from "https://deno.land/std@$STD_VERSION/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:4507/

Helper to manipulate Cookie through ServerRequest and Response.

import { ServerRequest } from "https://deno.land/std@$STD_VERSION/http/server.ts";
import { getCookies } from "https://deno.land/std@$STD_VERSION/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@$STD_VERSION/http/server.ts";
import {
  Cookie,
  setCookie,
} from "https://deno.land/std@$STD_VERSION/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@$STD_VERSION/http/server.ts";
import { deleteCookie } from "https://deno.land/std@$STD_VERSION/http/cookie.ts";

let response: Response = {};
deleteCookie(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.