1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-24 08:09:08 -05:00
denoland-deno/std/http
Nayeem Rahman 55119aaee2
refactor(cli/js/net): Cleanup iterable APIs (#4236)
Listener and UDPConn are AsyncIterables instead of AsyncIterators.
The [Symbol.asyncIterator]()s are defined as generators and the
next() methods are gone.

"Listener/Socket has been closed" errors are now BadResource.
2020-03-10 15:14:22 -04:00
..
testdata fix(file_server): don't crash on "%" pathname (#3953) 2020-02-11 15:53:09 -05:00
cookie.ts Enable TS strict mode by default (#3899) 2020-02-19 15:36:18 -05:00
cookie_test.ts refactor(std/http): move io functions to http/io.ts (#4126) 2020-02-26 10:48:35 -05:00
file_server.ts Rename readDir -> readdir (#4225) 2020-03-06 08:34:02 -05:00
file_server_test.ts reduce unnecessary output on tests (#4148) 2020-02-27 15:12:04 -05:00
http_bench.ts feat: Deno.args now does not include script (#3628) 2020-01-09 11:37:01 -07:00
http_status.ts Happy new year! (#3578) 2020-01-02 15:13:47 -05:00
io.ts refactor(std/http): move io functions to http/io.ts (#4126) 2020-02-26 10:48:35 -05:00
io_test.ts refactor(std/http): move io functions to http/io.ts (#4126) 2020-02-26 10:48:35 -05:00
mock.ts refactor(std/http): move io functions to http/io.ts (#4126) 2020-02-26 10:48:35 -05:00
mod.ts feat: Add missing mod.ts files in std (#3509) 2019-12-20 15:21:30 -05:00
racing_server.ts fix: [http] Consume unread body and trailers before reading next request (#3990) 2020-02-24 22:49:39 -05:00
racing_server_test.ts refactor(std/http): move io functions to http/io.ts (#4126) 2020-02-26 10:48:35 -05:00
README.md std/http: allow response body to be string (#3705) 2020-01-17 18:44:35 -05:00
server.ts refactor(cli/js/net): Cleanup iterable APIs (#4236) 2020-03-10 15:14:22 -04:00
server_test.ts refactor(std/http): move io functions to http/io.ts (#4126) 2020-02-26 10:48:35 -05:00

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/

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.