前言
Deno 是一个由 Ryan Dahl 在 2018 年创建的 TypeScript 运行时,它基于 V8 引擎,使用 Rust 实现,是一个安全的、现代的 JavaScript/TypeScript 运行时。在 Deno 中,我们可以使用 HTTP 模块与服务器进行通讯。
本文将通过详细介绍 HTTP 模块的使用和相关示例代码,为读者介绍如何在 Deno 中使用 HTTP 模块。
HTTP 模块
Deno 中的 HTTP 模块提供了构建 HTTP 服务器和客户端的 API。可以使用该模块发送 HTTP 请求和响应,从而与网络进行交互,还可以创建 HTTP 服务器以接收请求。
HTTP 请求
在 Deno 中,可以使用 fetch 方法向服务器发送 HTTP 请求。该方法返回一个 Promise 对象,该 Promise 对象最终将返回一个 Response 对象。
发送 GET 请求
const url = "https://jsonplaceholder.typicode.com/todos/1";
fetch(url).then(response => {
return response.json()
})
.then(data => console.log(data))
.catch(error => console.log(error));发送 POST 请求
// www.javascriptcn.com code example
const url = "https://jsonplaceholder.typicode.com/posts";
const data = {
title: "foo",
body: "bar",
userId: 1
};
fetch(url, {
method: "POST",
body: JSON.stringify(data),
headers: {
"Content-Type": "application/json"
}
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.log(error));HTTP 响应
在 Deno 中,可以使用 serve 方法创建一个 HTTP 服务器。当该服务器接收到请求时,它将返回一个响应。
import { serve } from "https://deno.land/std/http/server.ts";
const s = serve({ port: 8080 });
console.log("http://localhost:8080/");
for await (const req of s) {
req.respond({ body: "Hello Deno!" });
}WebSocket
WebSocket 是一种协议,它可以在客户端和服务器之间进行全双工通信。在 Deno 中,可以使用 WebSocket 类来实现 WebSocket 通信。
// www.javascriptcn.com code example
import { serve } from "https://deno.land/std/http/server.ts";
import { acceptWebSocket, isWebSocketCloseEvent } from "https://deno.land/std/ws/mod.ts";
const s = serve({ port: 8080 });
console.log("http://localhost:8080/");
for await (const req of s) {
const { conn, r: bufReader, w: bufWriter, headers } = req;
try {
const sock = await acceptWebSocket({
conn,
bufReader,
bufWriter,
headers
});
console.log("socket connected!");
for await (const ev of sock) {
if (typeof ev === "string") {
console.log("ws:Text", ev);
await sock.send("pong:" + ev);
} else if (ev instanceof Uint8Array) {
console.log("ws:Binary", ev);
} else if (isWebSocketCloseEvent(ev)) {
console.log("ws:Close", ev);
}
}
} catch (err) {
console.error(`failed to accept websocket: ${err}`);
await req.respond({ status: 400 });
}
}结语
本文介绍了 Deno 中的 HTTP 模块的使用,包括如何发送 HTTP 请求和接收 HTTP 响应。同时,还介绍了如何使用 WebSocket 在客户端和服务器之间进行全双工通信。这些技术都是前端开发中非常重要的一部分,希望读者可以在实践中深入了解和应用它们。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d05e51e46428fe9ed54a3b