📜  http 请求是由什么组成的 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:15:45.191000             🧑  作者: Mango

HTTP 请求是由什么组成的 - TypeScript

HTTP请求由三部分组成:请求行、请求头和请求体。

请求行

请求行由三部分组成:请求方法、请求路径和HTTP协议版本。通常情况下,常用的请求方法有GET、POST、PUT、PATCH、DELETE等。

const requestMethod: string = 'GET'; // 请求方法
const requestPath: string = '/api/users'; // 请求路径
const httpVersion: string = 'HTTP/1.1'; // HTTP协议版本
const requestLine: string = `${requestMethod} ${requestPath} ${httpVersion}`; // 组成请求行
请求头

请求头由多个键值对组成,用于传递一些额外的信息给服务器,比如Content-Type、User-Agent等。

const requestHeaders: {
  'Content-Type': string;
  'User-Agent': string;
} = {
  'Content-Type': 'application/json', // 表示请求体是JSON格式
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', // 浏览器标识
};
请求体

请求体用于向服务器传递数据,通常用于POST、PUT等请求方法。

const requestBody: {
  name: string;
  age: number;
} = {
  name: '张三',
  age: 18,
};
组成完整的HTTP请求

将请求行、请求头和请求体以空行分隔,就组成了完整的HTTP请求。

const requestMethod: string = 'POST'; // 请求方法
const requestPath: string = '/api/users'; // 请求路径
const httpVersion: string = 'HTTP/1.1'; // HTTP协议版本

const requestHeaders: {
  'Content-Type': string;
  'User-Agent': string;
} = {
  'Content-Type': 'application/json', // 表示请求体是JSON格式
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', // 浏览器标识
};

const requestBody: {
  name: string;
  age: number;
} = {
  name: '张三',
  age: 18,
};

const requestLine: string = `${requestMethod} ${requestPath} ${httpVersion}`; // 组成请求行

const request: string = `${requestLine}\r\n${Object.keys(requestHeaders)
  .map((key) => `${key}:${requestHeaders[key]}`)
  .join('\r\n')}\r\n\r\n${JSON.stringify(requestBody)}`; // 组成完整的HTTP请求

console.log(request);
/*
POST /api/users HTTP/1.1
Content-Type:application/json
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36

{"name":"张三","age":18}
*/

以上就是HTTP请求由三部分组成的详细介绍,分别是请求行、请求头和请求体。在日常开发中,我们需要根据实际情况来组装HTTP请求,以完成数据的传递和交互。