[JS] Obtener información de encabezado de encabezados

1. Escenarios de aplicación

  • Cuando solicitamos una interfaz, encontraremos que res contiene una información de encabezado de respuesta de encabezados:
fetch(url, {
    
    
   method: 'GET',
   headers: {
    
    
     'content-type': 'application/json',
     'X-Requested-With': 'XMLHttpRequest',
   },
   mode: 'cors',
   credentials: 'include',
 }).then(res => {
    
    
   console.log('res =', res);
 });

inserte la descripción de la imagen aquí

  • En primer lugar, debe tener valor, pero es solo un objeto de encabezado y no se puede recuperar proporcionando directamente la sintaxis del punto de objeto.

inserte la descripción de la imagen aquí

fetch(url, {
    
    
   method: 'GET',
   headers: {
    
    
     'content-type': 'application/json',
     'X-Requested-With': 'XMLHttpRequest',
   },
   mode: 'cors',
   credentials: 'include',
 }).then(res => {
    
    
   console.log('res =', res.headers.Date);	// undefined
   console.log('res =', res.headers.date);	// undefined
 });

En este momento, se utilizarán los métodos que vienen con el objeto Headers.

fetch(url, {
    
    
   method: 'GET',
   headers: {
    
    
     'content-type': 'application/json',
     'X-Requested-With': 'XMLHttpRequest',
   },
   mode: 'cors',
   credentials: 'include',
 }).then(res => {
    
    
   console.log('res =', res.headers.get('Content-Length'));	// 1590
   console.log('res =', res.headers.get('content-length'));	// 1590
   // 不区分大小写
   console.log('res =', res.headers.get('conTEnt-length'));	// 1590
 });

En segundo lugar, el método de instancia

  • Crear un objeto Encabezados vacío es simple:
var myHeaders = new Headers();

2.1, agregado: agregar ()

  • append()Método: puede agregar un nuevo valor a los encabezados existentes o agregar un encabezado que no existe.
  • gramática:
`参数:
	name: 要追加给 Headers 对象的 HTTP header 名称。
	value: 要追加给 Headers 对象的 HTTP header 值。
`
myHeaders.append(name,value);
  • Ejemplo:
var myHeaders = new Headers(); 
myHeaders.append('Content-Type', 'image/jpeg');
myHeaders.get('Content-Type'); // Returns 'image/jpeg'

// 如果指定 header 不存在,append()将会添加这个 header 并赋值 .
myHeaders.append('Accept-Encoding', 'deflate');
// 如果指定 header 已存在并允许有多个值,append()将会把指定值添加到值队列的末尾。
myHeaders.append('Accept-Encoding', 'gzip');
myHeaders.getAll('Accept-Encoding'); // Returns [ "deflate", "gzip" ]
  • Para sobrescribir valores antiguos con valores nuevos, use Headers.set.

2.2 Adquisición: get()

  • get()Método: Devuelve todos los valores del encabezado especificado del objeto Headers en forma de ByteString. Devuelve nulo si el encabezado solicitado no existe en el objeto de encabezado.
  • gramática:
`参数:
	name: 要获取 Headers 对象的 HTTP header 名称。
`
myHeaders.get(name);
  • Ejemplo:
var myHeaders = new Headers(); 
myHeaders.append('Content-Type', 'image/jpeg');
myHeaders.get('Content-Type'); // 'image/jpeg'

// 如果存在多个 header 值,那么只有第一个值会被返回:
myHeaders.append('Accept-Encoding', 'deflate');
myHeaders.append('Accept-Encoding', 'gzip');
myHeaders.get('Accept-Encoding'); // "deflate,gzip"

2.3 Cobertura: set()

  • set()Método: puede modificar un conjunto existente de pares clave-valor o crear un nuevo par clave-valor en el objeto de encabezado declarado.
  • gramática:
`参数:
	name: 需要对 HTTP header 设置新值的 key,一般为字符串。
		  如果设置的name 不是 HTTP header 规范里面规定的 name,那么将会抛出错误"TypeError"。
	value: value 就是 name 对应的值.
`
myHeaders.set(name);
  • Ejemplo:
var myHeaders = new Headers(); 
myHeaders.append('Content-Type', 'image/jpeg');
myHeaders.set('Content-Type', 'text/html');		// 'text/html'

// 如果这个键值对不存在,那么 set() 方法首先创建一个键值对,然后给它赋值。
myHeaders.set('Accept-Encoding', 'deflate');
// 如果这个键值对存在,那么 set() 方法将会覆盖之前的 value 值:
myHeaders.set('Accept-Encoding', 'gzip');
myHeaders.get('Accept-Encoding'); // 'gzip'
  • Si necesita agregar un par clave-valor en lugar de sobrescribir el par clave-valor anterior, debe usar el método append()

2.4 Juicio: tiene()

  • has()Método: devuelve un valor booleano para declarar si un objeto Headers contiene información de encabezado específica.
  • gramática:
`参数:
	name: 你要测试的 HTTP 头字段的名称。
		  如果给出的名称不在 HTTP 头中,将爬出异常TypeError。
`
myHeaders.has(name);
  • Ejemplo:
var myHeaders = new Headers(); 

myHeaders.append('Content-Type', 'image/jpeg');
myHeaders.has('Content-Type'); // true
myHeaders.has('Accept-Encoding'); // false

2.5, Sentencia: borrar()

  • delete()Método: puede eliminar el encabezado especificado del objeto Encabezados.
  • gramática:
`参数:
	name: 需删除的 HTTP header 名称。
`
myHeaders.delete(name);
  • Ejemplo:
var myHeaders = new Headers(); 

// 先添加
myHeaders.append('Content-Type', 'image/jpeg');
myHeaders.get('Content-Type'); // 'image/jpeg'
// 后删除
myHeaders.delete('Content-Type');
myHeaders.get('Content-Type'); // null(因为它已被删除)

2.6, poligonal: clave(), valores(), entradas()

Lo que se devuelve es un Headers Iterator {}iterador, que no puede ser atravesado por los métodos ordinarios for, forEach y map.

// 创建一个 Headers 对象
var myHeaders = new Headers();
myHeaders.append('Content-Type', 'text/xml');
myHeaders.append('Vary', 'Accept-Language');

// 显示 Headers 中所有的 key
for(var key of myHeaders.keys()) {
    
    
   console.log(key);
   /*
   		打印结果:
   		'Content-Type'
   		'Vary'
   */
}

// 显示 Headers 中所有的 value
for(var value of myHeaders.values()) {
    
    
   console.log(value);
   /*
   		打印结果:
   		'text/xml'
   		'Accept-Language'
   */
}

// 显示 Headers 中所有的 [key, value] 键值对
for(var entrie of myHeaders.entries()) {
    
    
   console.log(entrie);
   /*
   		打印结果:
   		['Content-Type', 'text/xml']
   		['Vary', 'Accept-Language']
   */
}

Supongo que te gusta

Origin blog.csdn.net/qq_45677671/article/details/130860036
Recomendado
Clasificación