Buscar resposta - com escopo, global
A API de busca de resposta fornece métodos para criar um novo objeto de resposta e para lidar com o corpo da resposta criado por um método de API de solicitação de busca.
- Buscar - fetch (recurso de cadeia de caracteres, opções de objeto): inicia o processo de busca de um recurso da rede.
- Buscar cabeçalhos - com escopo, global: recuperar e modificar cabeçalhos de solicitação e resposta.
- Buscar solicitação - com escopo, global: criar um novo objeto de solicitação.
- Buscar RequestInit - com escopo, global: defina opções para configurar uma solicitação de busca.
- Buscar resposta - com escopo, global: criar um novo objeto de resposta.
Para oferecer suporte a ações de busca, a propriedade do sistema, glide.hosts.allowlist, permite controles sobre quais hosts um método de busca pode acessar. Aplica-se a APIs HTTP como RestMessageV2 e as mencionadas acima. Para obter mais informações sobre glide.hosts.allowlist, consulte Available system properties.
Propriedades da resposta
A API de resposta fornece propriedades que retornam detalhes sobre a resposta HTTP. Essas propriedades permitem que você acesse metadados (como status, cabeçalhos, tipo) e o corpo da resposta (corpo) para processamento posterior. Eles permitem verificar o sucesso de uma solicitação (ok) e analisar os dados retornados em vários formatos (por exemplo, JSON ou texto). Essas propriedades são importantes para validar e manipular respostas do servidor em aplicações do lado do cliente. Para ler explicações mais detalhadas sobre cada propriedade, consulte https://developer.mozilla.org/en-US/docs/Web/API/Response.
| Nome da propriedade | Descrição | Exemplo |
|---|---|---|
| corpo | Somente pronto. Contém um fluxo legível de dados de bytes nos conteúdos do corpo da resposta. Valores válidos: um ReadableStream ou nulo. Tipo de dados: cadeia de caracteres |
|
| corpoUsado | Somente pronto. Sinalizador que indica se o corpo já foi lido. Valores aceitos:
Tipo de dados: booliano |
|
| cabeçalhos | Somente leitura. O objeto de cabeçalhos associado à resposta. Tipo de dados: objeto de cabeçalhos |
|
| ok | Somente pronto. Sinalizador que indica se a resposta foi bem-sucedida (status no intervalo de 200 a 299) ou não. Valores aceitos:
Tipo de dados: booliano |
|
| redirecionado | Somente leitura. Sinalizador que indica se a resposta é um resultado de que a solicitação foi redirecionada. Valores aceitos:
Tipo de dados: booliano |
|
| status | Somente leitura. Códigos de status HTTP da resposta. Por exemplo, 200 para sucesso. Tipo de dados: número |
|
| StatusText | Somente leitura. Mensagem de status correspondente ao código de status HTTP em response.status. Por exemplo, isso seria OK para um código de status 200, Continuar para 100, Não encontrado para 404.Tipo de dados: cadeia de caracteres |
|
| tipo | Somente leitura. Tipo de resposta. Valores aceitos:
Tipo de dados: cadeia de caracteres |
|
| URL | Somente leitura. URL da resposta. Tipo de dados: cadeia de caracteres |
|
Buscar resposta - Resposta (corpo do objeto, opções de objeto)
Cria um novo objeto de resposta usando o construtor Response().
| Nome | Tipo | Descrição |
|---|---|---|
| corpo | Objeto | Opcional. Um objeto que define um corpo para a resposta. Tipos válidos:
Padrão: nulo |
| opções | Objeto | Opcional. Um objeto de opções que contém todas as configurações personalizadas que você deseja aplicar à resposta ou um objeto vazio (que é o valor padrão). As opções possíveis são:
|
Neste exemplo, criamos um novo objeto de resposta usando o construtor, passando um novo Blob como um corpo e um objeto de inicialização contendo opções personalizadas de status e statusText:
const myBlob = new Blob();
const myOptions = { status: 200, statusText: "Status message!" };
const myResponse = new Response(myBlob, myOptions);
Buscar resposta - arrayBuffer()
Retorna uma promessa que é resolvida com um ArrayBuffer.
O método arrayBuffer() é útil ao trabalhar com dados binários, como imagens, arquivos de áudio ou qualquer outro arquivo binário que precise ser processado.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Objeto | Uma promessa que é resolvida com um ArrayBuffer, que representa um buffer de dados binários brutos genéricos. |
| Exceção | Descrição |
|---|---|
| DOMException – AbortError | Uma exceção informando que a solicitação foi anulada. |
| Erro de tipo | Lançado por um dos seguintes motivos:
|
| Erro de intervalo | Houve um problema ao criar o ArrayBufferassociado. Por exemplo, se o tamanho dos dados for muito grande. |
- fetch(): busca um recurso da URL especificada.
- response.ok: verifica se o status da resposta está no intervalo de 200 a 299.
- arrayBuffer(): lê o corpo da resposta e o converte em um ArrayBuffer, que representa um buffer de dados binários brutos genérico de comprimento fixo.
- Uint8Array: converte o ArrayBuffer em um Uint8Array, que é uma matriz digitada para facilitar a manipulação de dados binários.
javascriptCopy code// Simple API to fetch binary data and process it using arrayBuffer()asyncfunctionfetchBinaryData(url) {
try {
// Fetch the resource from the provided URLconst response = awaitfetch(url);
// Check if the response is successfulif (!response.ok) {
thrownewError(`HTTP error! Status: ${response.status}`);
}
// Convert the response body to an ArrayBufferconst arrayBuffer = await response.arrayBuffer();
// Process the ArrayBuffer (e.g., convert it to a typed array)const uint8Array = newUint8Array(arrayBuffer);
// Return the processed datareturn uint8Array;
} catch (error) {
console.error("Error fetching or processing binary data:", error);
throw error;
}
}
// Example usageconst binaryDataUrl = 'https://example.com/path/to/binary/data';
fetchBinaryData(binaryDataUrl)
.then((data) => {
console.log("Binary data as Uint8Array:", data);
// Further processing can be done here, e.g., rendering an image or playing audio
})
.catch((error) => {
console.error("Failed to fetch binary data:", error);
});Buscar resposta - blob()
Retorna uma promessa que é resolvida com um Blob.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Objeto | Uma promessa que é resolvida com um Blob. |
| Exceção | Descrição |
|---|---|
| DOMException – AbortError | Uma exceção informando que a solicitação foi anulada. |
| Erro de tipo | Lançado por um dos seguintes motivos:
|
- fetch(url): busca um recurso da URL especificada.
- response.blob(): converte o corpo da resposta em um objeto Blob, que representa dados binários.
- URL.createObjectURL(blob): gera um URL temporário para o blob, que pode ser usado no DOM (por exemplo, como uma origem de imagem).
- Anexação da imagem ao DOM: cria dinamicamente um elemento de imagem, define a URL do blob como sua origem e a anexa ao corpo do documento.
async function fetchBlob(url) {
try {
// Fetch the resource from the provided URL
const response = await fetch(url);
// Check if the response is successful
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
// Convert the response body to a Blob
const blob = await response.blob();
// Create a URL for the Blob and log it
const blobUrl = URL.createObjectURL(blob);
console.log("Blob URL:", blobUrl);
// For example, you can set it as the source of an image
const img = document.createElement('img');
img.src = blobUrl;
img.alt = "Fetched Blob Image";
document.body.appendChild(img);
} catch (error) {
console.error("Error fetching or processing blob:", error);
}
}
// Example usage with an image URL
const imageUrl = 'https://via.placeholder.com/150';
fetchBlob(imageUrl);
Buscar resposta - bytes()
Retorna uma promessa que é resolvida com um Uint8Array.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Objeto | Uma promessa que é resolvida com um Uint8Array. |
| Exceção | Descrição |
|---|---|
| DOMException - AbortError | A solicitação foi anulada. |
| Erro de tipo | Lançado por um dos seguintes motivos:
|
| Erro de intervalo | Houve um problema ao criar o ArrayBufferassociado. Por exemplo, se o tamanho dos dados for muito grande. |
O exemplo a seguir mostra como buscar um arquivo de texto, retornar o corpo como um Uint8Array e decodificá-lo em uma cadeia de caracteres.
const response = await fetch("https://www.example.com/textfile.txt");
const textFile = await response.bytes();
const string = new TextDecoder().decode(textFile);
console.log(string);
Buscar resposta - formData()
Retorna uma promessa que é resolvida com um objeto FormData.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Objeto | Uma promessa que é resolvida com um objeto FormData. |
| Exceção | Descrição |
|---|---|
| DOMException - AbortError | A solicitação foi anulada. |
| Erro de tipo | Lançado por um dos seguintes motivos:
|
- Corpo da solicitação:
JSON.stringify()usado para enviar os dados do formulário como JSON em vez de parâmetros codificados por URL. - Tipo de conteúdo: defina como
application/jsonpara indicar o formato do corpo da solicitação.
// Example of using Response.formData()
async function fetchFormData(url) {
try {
// Make a POST request to fetch the form data
const response = await fetch(url, {
method: 'POST',
body: JSON.stringify({
name: 'John Doe',
email: 'john.doe@example.com',
}),
headers: {
'Content-Type': 'application/json',
},
});
// Check if the response is successful
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
// Parse the response as FormData
const formData = await response.formData();
// Iterate through the FormData entries
for (const [key, value] of formData.entries()) {
console.log(`${key}: ${value}`);
}
} catch (error) {
console.error("Error fetching or processing form data:", error);
}
}
// Example usage
const formEndpoint = 'https://httpbin.org/post'; // Replace with your form endpoint
fetchFormData(formEndpoint);
Saída:
name: John Doe
email: john.doe@example.com
Buscar resposta - json()
Retorna uma promessa que é resolvida para o resultado da análise do texto do corpo como JSON.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Objeto | Uma promessa que é resolvida para um objeto JavaScript. Este objeto pode ser qualquer coisa que possa ser representada por JSON, como um objeto, matriz, cadeia de caracteres, número e assim por diante. |
| Exceção | Descrição |
|---|---|
| DOMException - AbortError | A solicitação foi anulada. |
| Erro de tipo | Lançado por um dos seguintes motivos:
|
| Erro de Sintaxe | O corpo da resposta não pode ser analisado como JSON. |
- fetch() faz uma solicitação GET para a URL.
- O response.ok verifica se a solicitação foi bem-sucedida (código de status 200–299).
- Se for bem-sucedido, response.json() será chamado para analisar os dados JSON da resposta.
- Os dados analisados são registrados nos logs do sistema usando a API do Console. Se ocorrer algum erro durante a solicitação ou análise, ele será detectado e registrado.
fetch('https://jsonplaceholder.typicode.com/posts/1')
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => console.log(data))
.catch(error => console.error('Fetch error:', error));
Buscar resposta - text()
Lê o corpo da resposta e o retorna como uma cadeia de caracteres simples. A resposta é sempre decodificada usando UTF-8.
O método text() é útil para respostas que contêm dados textuais, como HTML, JSON (se você quiser manipulá-los manualmente), XML ou arquivos de texto sem formatação que devem ser tratados como cadeias de caracteres sem formatação.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Nenhum(a) | Uma promessa que é resolvida com uma cadeia de caracteres codificada em UTF-8. |
| Exceção | Descrição |
|---|---|
| DOMException - AbortError | A solicitação foi anulada. |
| Erro de tipo | Lançado por um dos seguintes motivos:
|
O exemplo a seguir mostra como uma maneira simples de usar text() quando o servidor retorna texto sem formatação, como Olá, mundo! Esta é uma amostra de resposta.
const response = awaitfetch('https://example.com/text-endpoint');
const text = await response.text();
console.log(text); // Outputs: Hello, world! This is a sample response.
Saída:
Hello, world! This is a sample response.