当我向某个端点发送删除请求时,例如使用来自终端的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)
控制台上的错误.我错过了什么?我在选项请求上获得了有效的方法列表.
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调试工具启用时才会看到这种行为......很有趣
我使用Fetch API来获取URL的内容.对于我的内部开发,我试图连接到开发服务器,我收到一个错误.
此服务器的证书无效.您可能连接到假装为"xxx.com"的服务器,这可能会使您的机密信息面临风险.
如何为内部用途禁用SSL /证书检查?或者我有一个xxx.crt文件,如何安装或传递它以获得成功响应.
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未定义
我是否需要模拟这些标准模块?如何在单元测试用例中导入标题
我正在尝试自动化与旧的Web界面进行交互,该界面目前只暴露用户驱动的表单,因此我需要从带有动态请求的网页中抓取一些信息.
如果我使用XHR,我可以将响应视为a Document,这使我可以使用类似方法querySelector从特定节点检索信息.我想尝试使用Fetch API,它只给我一个Body.这blob,formData,json,和text,但我没有看到任何东西,会让我把它作为一个Document.
我错过了什么吗?我可以直接从中查询文档或其他内容fetch吗?如果没有,是否有一种简单的方法来获取字符串(从Body.text())并将其转换为文档?
我的 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?
所以,我使用 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) 我在 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) 我编写了一个自定义挂钩,它使用 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) 我有一个表单,可以使用 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) fetch-api ×10
javascript ×8
reactjs ×2
asp.net-core ×1
certificate ×1
es6-modules ×1
html ×1
jestjs ×1
next.js ×1
node.js ×1
promise ×1
react-native ×1
swr ×1
typescript ×1