❓ Foodist의 사전적 의미는 음식에 매우 관심이 많은 사람을 뜻하며, 이 웹 사이트는 사용자가 원하는 음식의 영양학적 정보(영양 분석 데이터)를 제공합니다.
global.d.ts
파일 생성 후 아래 내용 작성.declare module "*.css" {
const content: { [className: string]: string };
export = content;
}
외부 API를 사용하고 있기 때문에 서버를 제어할 수 없으므로, HTTP 응답헤더(Access-Control-Allow-Origin)를 설정할 수 없다.
콘솔창에 뜨는 에러 메세지 ⬇️
Access to XMLHttpRequest at 'http://openapi.test.kr/api/sample/test/json/1/5' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
$ npm i http-proxy-middleware
setupProxy.js
파일 생성💡 만약 적용할 API의 URL이
http://openapi.foodsafetykorea.go.kr**/api/apiKey/json/1/3**
라면,
여기서 엔드포인트는/api/apiKey/json/1/3
이다.
즉 아래와 같이, 엔드포인트를 제외한/api
직전의 URL을 적어주면 된다.
// setupProxy.js
const { createProxyMiddleware } = require("http-proxy-middleware");
module.exports = function (app) {
app.use(
"/api",
createProxyMiddleware({
target: "http://openapi.foodsafetykorea.go.kr",
changeOrigin: true,
// pathRewrite: {
// "^/api": "",
// },
})
);
};
“api” + “URL의 엔드포인트”
를 적는 것이다.// Api.js
const URL = "/apiKey/I2790/json/1/3";
async function getData() {
await axios.get("/api" + URL).then((response) => {
const foodList = response;
console.log(foodList);
})
}
Route path="/"
function App() {
return (
<Router>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</Router>
)
}
Route path="/{repository name}"
function App() {
return (
<Router>
<Routes>
<Route path="/react-foodist" element={<Home />} />
<Route path="/react-foodist/about" element={<About />} />
</Routes>
</Router>
)
}