fetch 함수로 https://jsonplaceholder.typicode.com/posts 해당 엔드포인트에 요청을 한다./fetch,/fetch/detail, /axios 3가지 독립적인 페이지에서 위 api 요청을 실행한다./fetch 페이지에 들어간다. fetch를 하는지 확인한다./fetch/detail 에 들어간다. fetch를 하는지 확인한다./axios 에 들어간다. fetch를 하는지 확인한다./fetch 에서는 fetch를 한다./fetch/detail 에서는 fetch를 하지 않는다./axios 에서는 fetch를 하지 않는다.fetch 함수를 이용해서 해당 endpoint에 api 요청을 하는 함수를 선언한다.
console.log('실행!') 을 찍어준다.console.log(result)를 찍어준다.// @/utils/index.ts
type Data = {
id: number;
title: string;
body: string;
userId: number;
};
export async function fetchPosts() {
const data = await fetch('<https://jsonplaceholder.typicode.com/posts>');
console.log('⭐️ 실행! ⭐️');
const result: Promise<Data[]> = data.json();
console.log(result);
return result;
}
/fetch 페이지에서 fetchPosts 함수를 import 하여 실행하여 데이터를 가져온후 화면에 그린다.
// @app/fetch/index.ts
import { fetchPosts } from '@/utils';
export default async function FetchContainer() {
const data = await fetchPosts();
return (
<ul>
{data.map((item) => (
<li key={item.id}>
<h1>{item.id}</h1>
<h2>{item.title}</h2>
<p>{item.body}</p>
</li>
))}
</ul>
);
}
/fetch/detail 페이지에서 fetchPosts 함수를 import 하여 실행하고, id가 짝수인 녀석들만 화면에 그린다.
// @app/fetch/detail/index.ts
import { fetchPosts } from '@/utils';
export default async function FetchDetailPage() {
const data = (await fetchPosts()).filter((item) => item.id % 2 === 0);
return (
<ul>
{data.map((item) => (
<li key={item.id}>
<h1>{item.id}</h1>
<h2>{item.title}</h2>
<p>{item.body}</p>
</li>
))}
</ul>
);
}