"Application Programming Interface"의 약자로 프로그램끼리 소통할 수 있게 도와주는 도구
API는 애플리케이션 코드와 데이터베이스 사이의 중간 계층이다.
Next.js는 React를 기반으로 한 프레임워크이다.
Next.js에서는 'API Routes'라는 기능을 제공해 서버 측에서 API 엔드 포인트를 쉽게 만들 수 있다.
// pages/api/posts.js
export default function handler(req, res) {
// 여기서 데이터베이스에서 데이터를 가져오거나 외부 API를 호출합니다.
const posts = [
{ id: 1, title: 'First Post', content: 'This is the first post' },
{ id: 2, title: 'Second Post', content: 'This is the second post' },
];
// 클라이언트에게 JSON 형식으로 응답을 반환합니다.
res.status(200).json(posts);
}
위 코드는 '/api/posts' URL로 요청이 들어오면 서버가 게시물 리스트를 JSON 형식으로 반환하는 API엔드 포인트를 생성한다.
async funtion fetchPosts(){
const response = await fetch('/api/posts');
const data = await response.json();
console.log(data);
}
데이터베이스에서 특정 데이터를 조회하거나 조작하기 위해 사용하는 명렁어
데이터베이스 쿼리를 작성하는 방법에는 두 가지 주요 방식이 존재
SQL은 데이터베이스와 상호작용하기 위해 사용하는 표준 언어이다.
예를 들어 데이터 베이스에서 특정 정보를 조회하려면 SQL 쿼리를 사용한다.
ORM은 객체 지향 프로그래밍 언어와 관계형 데이터베이스를 연결해주는 도구이다.
SQL을 직접 작성하지 않고도 데이터베이스와 상호작용할 수 있다.
또한 데이터 베이스는 클라이언트에서 직접 데이터베이스 쿼리를 수행하지 말고, 서버를 통해 데이터베이스와 상호작용해야 한다.
Next.js에서 서버 측에서 실행되는 React 컴포넌트이다.
Next.js는 React Server Components를 사용해 데이터를 가져오고 페이지를 렌더링한다.
// 비동기 데이터 가져오기
export default async function MyComponent() {
const data = await fetchDataFromServer();
return <div>{data}</div>;
}
. Server Components는 서버에서 실행되기 때문에, 클라이언트(브라우저)는 서버에서 처리된 결과만을 받아온다.
=> 클라이언트는 무거운 데이터 처리나 로직을 신경 쓸 필요가 없다.
//서버 측에서 데이터베이스에 직접 접근
export default async function Posts(){
const posts = await fetchPostsFromDatabase();
return(
<div>
{posts. map(post => (
<div key ={post.id}> {post.title} </div>
))}
</div>
)
}