


Next.js에서 하위 연결을 사용하여 여러 페이지의 데이터 소스를 분리하는 방법
하위 연결은 애플리케이션 내의 특정 페이지 또는 페이지 집합에 대해 별도의 연결을 생성할 수 있는 Next.js의 기능입니다. 이는 앱의 특정 페이지에서만 액세스해야 하는 다양한 데이터 소스나 API가 있는 경우 유용할 수 있습니다.
예를 들어 공개 기사와 비공개 기사가 모두 포함된 블로그가 있다고 가정해 보겠습니다. 비공개 기사에는 별도의 데이터베이스나 API를 사용하고 공개 기사에는 동일한 데이터베이스나 API를 사용할 수 있습니다. 하위 연결을 사용하면 비공개 기사에 대해 별도의 연결을 생성하고 사용자가 로그인하고 해당 기사를 볼 수 있는 권한이 있는 경우에만 사용할 수 있습니다.
다음은 Next.js 앱에서 하위 연결을 사용할 수 있는 방법에 대한 예입니다.
// 페이지/api/articles.js
import { NextApiRequest, NextApiResponse } from 'next';
const Articles = () => {
// 이 API 엔드포인트는 모든 공개 기사를 반환합니다. return {
async get() {
const 기사 = fetch('https://my-public-articles.com/api/articles');
반환 { 데이터: 기사 };
},
};
};
// 페이지/api/private-articles. js
import { NextApiRequest, NextApiResponse } from 'next';
const PrivateArticles = () => {
// 이 API 엔드포인트는 모든 비공개 기사를 반환합니다
return {
async get() {
const 기사 = wait fetch('https://my -private-articles.com/api/articles');
return { 데이터: 기사 };
},
};
};
// 페이지/index.js
import { useSubconnect } from 'next/subconnect';
const IndexPage = () => {
// 하위 연결을 사용하여 공개 기사를 가져옵니다. const { data: publicArticles } = useSubconnect( 기사 );
// 사용자가 로그인할 때 하위 연결을 사용하여 비공개 기사를 가져옵니다. const { data: privateArticles } = useSubconnect( PrivateArticles, {
auth: true, // 사용자가 로그인한 경우에만 액세스 허용
});
return (
{publicArticles.map((article) => (
))}
{privateArticles.map((article) => (
))}
);
};
```
이 예에서 `Articles` 및 `PrivateArticles` API는 각각 고유한 데이터 소스 및 인증 요구 사항이 있는 별도의 하위 연결로 정의됩니다. `IndexPage` 구성 요소는 `useSubconnect` 후크를 사용하여 `Articles` API에서 공개 기사를 가져오고, 사용자가 로그인할 때 `useSubconnect` 후크를 사용하여 `PrivateArticles` API에서 비공개 기사를 가져옵니다.
By 이러한 방식으로 하위 연결을 사용하면 동일한 Next.js API 및 페이지 렌더링 인프라를 계속 사용하면서 앱의 다양한 페이지에 대한 데이터 소스를 분리하고 독립적으로 관리할 수 있습니다.



