如何修复 429(请求过多)?
How to fixed 429 (Too Many Requests)?
我正在 React 中创建一个自定义挂钩,用于从 GitHub 个职位 API 中获取职位。但是 CORS 创建 problems.So 我也使用 const BASE_URL = 'https://cors-anywhere.herokuapp.com/https://jobs.github.com/positions.json';
此抛出错误 429(请求过多)。我不使用任何后端。
此挂钩将在加载应用程序时从 app.js 调用一次。
useFetchJobs.js
import { useReducer, useEffect } from 'react';
import axios from 'axios';
const ACTIONS = {
MAKE_REQUEST: 'make-request',
GET_DATA: 'get-data',
ERROR: 'error'
}
const BASE_URL = 'https://jobs.github.com/positions.json';
function reducer(state, action) {
switch (action.type) {
case ACTIONS.MAKE_REQUEST:
return { jobs: [], loading: true }
case ACTIONS.GET_DATA:
return { ...state, jobs: action.payload.jobs, loading: false }
case ACTIONS.ERROR:
return { ...state, jobs: [], loading: false , error: action.payload.error }
default:
return state;
}
}
export default function useFetchJobs(params, page) {
const [state, dispatch] = useReducer(reducer, { jobs: [], loading: true });
useEffect(() => {
dispatch({ type: ACTIONS.MAKE_REQUEST });
axios.get(BASE_URL, {
params: { markdown: true, page: page, ...params }
}).then(res => {
dispatch({ type: ACTIONS.GET_DATA, payload: { jobs: res.data }});
}).catch(e => {
dispatch({ type: ACTIONS.ERROR, payload: { error: e }});
})
}, [params, page]);
return state;
};
App.js
import React from 'react';
import useFetchJobs from "./useFetchJobs";
import Container from "react-bootstrap/Container";
const App = () => {
const { jobs, loading, error } = useFetchJobs();
return (
<Container>
{loading && <h1>Loading...</h1>}
{error && <h1>Error. Please try again...</h1>}
<h1>{jobs.length}</h1>
</Container>
);
}
export default App;
使用https://api.allorigins.win/raw?url= before the url fixes the issue. Cors anywhere seem to have a problem. Here is the documentation: https://allorigins.win/
我完成了您的代码所基于的相同教程,并使用 local-cors-proxy 修复了它。只需按照他们的文档进行操作,您就可以开始了。
使用 https://api.allorigins.win/raw?url= 对我也有用,但不知何故它坏了 ReactMarkdown
,所以由于某种原因不再解析工作细节的降价。
很多人都在使用 cors-anywhere,这可能就是它一直发送 Too many requests
的原因。我想在这种情况下最好依靠自己的代理。
这可能是 cors-anywhere.herokuapp.com
而不是您的应用程序的问题。
我正在 React 中创建一个自定义挂钩,用于从 GitHub 个职位 API 中获取职位。但是 CORS 创建 problems.So 我也使用 const BASE_URL = 'https://cors-anywhere.herokuapp.com/https://jobs.github.com/positions.json';
此抛出错误 429(请求过多)。我不使用任何后端。
此挂钩将在加载应用程序时从 app.js 调用一次。
useFetchJobs.js
import { useReducer, useEffect } from 'react';
import axios from 'axios';
const ACTIONS = {
MAKE_REQUEST: 'make-request',
GET_DATA: 'get-data',
ERROR: 'error'
}
const BASE_URL = 'https://jobs.github.com/positions.json';
function reducer(state, action) {
switch (action.type) {
case ACTIONS.MAKE_REQUEST:
return { jobs: [], loading: true }
case ACTIONS.GET_DATA:
return { ...state, jobs: action.payload.jobs, loading: false }
case ACTIONS.ERROR:
return { ...state, jobs: [], loading: false , error: action.payload.error }
default:
return state;
}
}
export default function useFetchJobs(params, page) {
const [state, dispatch] = useReducer(reducer, { jobs: [], loading: true });
useEffect(() => {
dispatch({ type: ACTIONS.MAKE_REQUEST });
axios.get(BASE_URL, {
params: { markdown: true, page: page, ...params }
}).then(res => {
dispatch({ type: ACTIONS.GET_DATA, payload: { jobs: res.data }});
}).catch(e => {
dispatch({ type: ACTIONS.ERROR, payload: { error: e }});
})
}, [params, page]);
return state;
};
App.js
import React from 'react';
import useFetchJobs from "./useFetchJobs";
import Container from "react-bootstrap/Container";
const App = () => {
const { jobs, loading, error } = useFetchJobs();
return (
<Container>
{loading && <h1>Loading...</h1>}
{error && <h1>Error. Please try again...</h1>}
<h1>{jobs.length}</h1>
</Container>
);
}
export default App;
使用https://api.allorigins.win/raw?url= before the url fixes the issue. Cors anywhere seem to have a problem. Here is the documentation: https://allorigins.win/
我完成了您的代码所基于的相同教程,并使用 local-cors-proxy 修复了它。只需按照他们的文档进行操作,您就可以开始了。
使用 https://api.allorigins.win/raw?url= 对我也有用,但不知何故它坏了 ReactMarkdown
,所以由于某种原因不再解析工作细节的降价。
很多人都在使用 cors-anywhere,这可能就是它一直发送 Too many requests
的原因。我想在这种情况下最好依靠自己的代理。
这可能是 cors-anywhere.herokuapp.com
而不是您的应用程序的问题。