标签: fetch-api

无法使用fetch api发送DELETE请求

当我向某个端点发送删除请求时,例如使用来自终端的httpie

http delete http://localhost:8181/admin/applications/uspecs

我得到了一个有效的行为,就像在{ success: true }响应体中一样.但是,当我这样做

fetch (
  'http://localhost:8181/admin/applications/uspecs',
  { method: 'DELETE' }
)
.then(res => doSomethingWithResponse())
.catch(err => console.error(err))
Run Code Online (Sandbox Code Playgroud)

在javascript代码中,然后我得到了一个

Fetch API cannot load http://localhost:8181/admin/applications/uspecs.
Method DELETE is not allowed by Access-Control-Allow-Methods in preflight response.
Run Code Online (Sandbox Code Playgroud)

控制台上的错误.我错过了什么?我在选项请求上获得了有效的方法列表.

javascript fetch-api

7
推荐指数
1
解决办法
6440
查看次数

React Native Fetch:第二个承诺悬挂

React Native的fetch存在奇怪的问题.它以前工作,不知道我改变了什么,但它已停止工作.

login(data,success,fail){
    console.log('doing fb login');
    fetch(host+'/api/login?credentials='+data.credentials)
        .then( (response) => {
            console.log('got login response');
            return response.json();
        } )
        .then( json => {
            console.log('got login json');
            if(json.result!='fail'){
                success(json);
            } else {
                fail(json);
            }
            return json;
        })
        .catch((error) => {
          console.warn(error);
        });
}
Run Code Online (Sandbox Code Playgroud)

问题是我看到第一个"获得登录响应"消息,但它只是挂起,没有任何反应,直到我按下触发"登录json"的屏幕并按预期继续.

令人沮丧的是因为这种情况一直在发生,我无法理解为什么第二个.then()不会自动触发.

任何帮助深表感谢.

编辑:发现了一个类似的问题:什么可能导致反应原生的这种缓慢提取?

似乎已经在考虑:https://github.com/facebook/react-native/issues/6679

此外,只有在Chrome调试工具启用时才会看到这种行为......很有趣

javascript promise reactjs react-native fetch-api

7
推荐指数
1
解决办法
1298
查看次数

JS Fetch API禁用SSL证书

我使用Fetch API来获取URL的内容.对于我的内部开发,我试图连接到开发服务器,我收到一个错误.

此服务器的证书无效.您可能连接到假装为"xxx.com"的服务器,这可能会使您的机密信息面临风险.

如何为内部用途禁用SSL /证书检查?或者我有一个xxx.crt文件,如何安装或传递它以获得成功响应.

javascript certificate fetch-api

7
推荐指数
1
解决办法
1599
查看次数

使用Jest模拟请求报头模块

function createRequest(method) {
     const init = {
         method,
         headers: new Headers({.....}),
     };

    return new Request(url, init); }
Run Code Online (Sandbox Code Playgroud)

我在上面的代码(https://davidwalsh.name/fetch)中使用Request标头(带有Fetch )

但是,在使用Jest编写单元测试用例时,它给了我这个错误:ReferenceError:Headers未定义

我是否需要模拟这些标准模块?如何在单元测试用例中导入标题

javascript request-headers jestjs fetch-api es6-modules

7
推荐指数
1
解决办法
3983
查看次数

我可以针对Fetch API响应使用DOM查询方法吗?

我正在尝试自动化与旧的Web界面进行交互,该界面目前只暴露用户驱动的表单,因此我需要从带有动态请求的网页中抓取一些信息.

如果我使用XHR,我可以将响应视为a Document,这使我可以使用类似方法querySelector从特定节点检索信息.我想尝试使用Fetch API,它只给我一个Body.这blob,formData,json,和text,但我没有看到任何东西,会让我把它作为一个Document.

我错过了什么吗?我可以直接从中查询文档或其他内容fetch吗?如果没有,是否有一种简单的方法来获取字符串(从Body.text())并将其转换为文档?

javascript fetch-api

7
推荐指数
1
解决办法
2780
查看次数

使用 Node.js 中的 fetch 测量 API 响应时间

我的 Node.js 应用程序中的功能之一是使用 fetch 函数调用外部 API。我正在尝试找到最准确的方法来测量上述 API 的响应时间。

我正在使用“日期”方法来做到这一点:

     let start_time = new Date().getTime();
      fetch('https://jsonplaceholder.typicode.com/posts/1')
  .then((res) => {
    return res.json();
  })
.then((data) => {
  console.log('Response time:', new Date().getTime() - start_time);
Run Code Online (Sandbox Code Playgroud)

有没有更好\更准确的方法来执行 fetch?

performance-testing node.js fetch-api

7
推荐指数
1
解决办法
1万
查看次数

有没有办法将数组元素添加到 formData 对象,以便 net core [FromForm] 能够正确反序列化它们?

所以,我使用 feth api 来发帖,而且通常效果很好。但我有一个问题,假设我有以下两种模型:

public class Contact
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<Phone> Phones { get; set; }
}

public class Phone
{
    public string Number { get; set; }
    public string Model { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想从 html 表单创建一个 formData 对象,它可以很好地添加字符串和整数。但当我这样做时:

var data = new formData(document.querySelector('form'));

let arr = [{
    Number: "12345678"
},
{
    Number: "87654321"
}
];

data.append('Phones', JSON.stringify(arr)); 
//OR
data.append('Phones', JSON.stringify(arr[0]));
data.append('Phones', JSON.stringify(arr[1]));
//OR
data.append('Phones[]', …
Run Code Online (Sandbox Code Playgroud)

javascript asp.net-web-api fetch-api asp.net-core

7
推荐指数
1
解决办法
5012
查看次数

获取:类型为“string |”的参数 undefined' 不可分配给'RequestInfo' 类型的参数

我在 fetch 函数的“fetchUrl”参数中收到以下错误

'string | 类型的参数 undefined' 不可分配给'RequestInfo' 类型的参数。

在这个函数中

let fetchUrl = getBaseUrlNative( process.env.APP_DATA, `/v2/marketing/app/file/${file}?cookies=${cookieSess}&expires=${Date.now()}`)

    await fetch(fetchUrl, { method: 'get' , cache:"no-store" , headers: {
        'Cache-Control': 'no-cache'
      }})
         .then(res => res.blob())
         .then(res => {  .......
Run Code Online (Sandbox Code Playgroud)

getBaseUrlNative 是

export const getBaseUrlNative = (eUrl : string | undefined, ext : string | undefined) => {
    try {
        if (!eUrl) throw new Error("Error .")
        return ext ? eUrl+ext : eUrl;
    } catch (err) {
        console.log(err)
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript typescript fetch-api

7
推荐指数
1
解决办法
5021
查看次数

处理自定义 SWR 挂钩中的错误

我编写了一个自定义挂钩,它使用 SWR 从我的 API 检索数据,同时为请求设置“身份验证”标头。

该挂钩对于所有成功的请求都工作正常,但我希望能够处理失败的请求(400 状态代码)。

我可以使用结果访问状态代码,const res = await fetch(url但如何将参数中的错误返回error给挂钩的调用者?

import useSWR from 'swr';

export default function useAPI(path) {
  const auth = useAuth();

  const { data, error, isValidating, mutate } = useSWR(
    !path ? null : `${process.env.NEXT_PUBLIC_API_URL}${path}`,

    async (url) => {
      const res = await fetch(url, {
        headers: {
          Authorization: `Bearer ${auth.user.token}`,
          accept: 'application/json',
        },
      });

      return res.json();
    }
  );
  return { data, error, isValidating, mutate };
}
Run Code Online (Sandbox Code Playgroud)

reactjs fetch-api next.js swr

7
推荐指数
1
解决办法
9653
查看次数

提交 fetch() POST 请求后使用 fetch() GET 请求输出数据库数据,无需硬页面刷新

我有一个表单,可以使用 javascript fetch()API 将数据使用 PHP 提交到 MySQL 数据库。

在下面的代码中,当提交表单时,页面上会输出一条成功消息,并且通过 API 可以防止硬刷新fetch()

板模块本身最初是通过“添加到板”元素上的单击事件显示的。

因为板列表是循环输出到页面上的while,所以我希望新的板名称也会在循环中输出,而无需刷新页面。我想我可以通过GET在单独的fetch()函数中添加一个简单的请求来做到这一点。但这不起作用(我也没有收到任何错误消息)。

当页面发生硬刷新时,新板会添加到输出列表中并按预期显示在页面上,因此我知道 PHP 在后端工作一切正常。

**编辑**

我已经输入了我尝试过的原始代码,这与@willgardner的答案基本相同。

因为我对fetch()AJAX 一般来说比较陌生 - 我是否打算在表单中构造(使用 JavaScript)一个新的按钮元素来显示请求的更新结果get?我假设 PHP 循环会在get请求发生时将其输出到页面上?就像页面最初加载时一样?

我还错过了 HTML 中的输入元素,该元素用于将post板名称发送到数据库,然后随请求取回该数据库get。现在它已被添加并且是create-board-name输入元素。

JavaScript

// Use fetch() to prevent page doing hard refresh when a new board name is created

let boardModuleForm = document.querySelector('.board-module-form'),

// URL details
myURL = new URL(window.location.href),
pagePath …
Run Code Online (Sandbox Code Playgroud)

html javascript fetch-api

7
推荐指数
1
解决办法
5116
查看次数