call api ใน Next.js

การเรียกใช้ API ใน Next.js สามารถทำได้หลายวิธี แต่วิธีที่แพร่หลายและที่เป็นที่แนะนำคือใช้ fetch หรือแพ็กเกจเสริมอื่น ๆ เช่น Axios เพื่อทำการเรียก API ภายนอก. นี่คือวิธีการเรียกใช้ API ใน Next.js โดยใช้ fetch:

  1. สร้างโครงหน้า (page) หรือคอมโพนเนนต์ (component) ที่คุณต้องการใช้ในการแสดงผลข้อมูลจาก API โดยปกติคุณจะสร้างโครงหน้าในโฟลเดอร์ pages ของโปรเจ็กต์ Next.js ของคุณ.

  2. ในโครงหน้าหรือคอมโพนเนนต์ที่คุณสร้าง เรียกใช้ fetch เพื่อเรียก API ดังนี้:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// ตัวอย่างการเรียกใช้ API ด้วย fetch
import { useEffect, useState } from 'react';

function MyComponent() {
const [data, setData] = useState(null);

useEffect(() => {
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data'); // เปลี่ยน URL ของ API ตามที่คุณต้องการ
if (!response.ok) {
throw new Error('Network response was not ok');
}

const responseData = await response.json();
setData(responseData);
} catch (error) {
console.error('Error fetching data:', error);
}
}

fetchData();
}, []);

if (!data) {
return <div>Loading...</div>;
}

return (
<div>
{/* แสดงข้อมูลจาก API ตามที่คุณต้องการ */}
</div>
);
}

export default MyComponent;
  1. ในตัวอย่างข้างบนเราใช้ useState เพื่อเก็บข้อมูลที่ได้รับจาก API และ useEffect เพื่อดึงข้อมูลเมื่อคอมโพนเนนต์ถูกโหลด. คุณสามารถปรับแต่งโค้ดใน useEffect เพื่อรวมการจัดการข้อผิดพลาดหรือการกำหนดค่าอื่น ๆ ตามความต้องการของคุณ.

  2. รันโปรเจ็กต์ Next.js ของคุณโดยใช้คำสั่ง npm run dev หรือ yarn dev เพื่อดูผลลัพธ์ที่แสดงข้อมูลจาก API บนหน้าเว็บ.

  3. โดยปกติคุณควรจะต้องเรียก API จาก getServerSideProps หรือ getStaticProps เมื่อจะสร้างหน้า Next.js ที่ต้องการการเรียก API ตอนตัวหน้าถูกสร้างขึ้น (server-side rendering หรือ static generation) เพื่อให้ความเร็วในการโหลดเว็บไซต์ดีขึ้น แต่ในตัวอย่างข้างบนเราใช้ fetch ใน useEffect เพื่อง่ายต่อการเรียก API ในคอมโพนเนนต์ที่ถูกโหลดในฝั่งไคลเอนต์.

คำแนะนำเพิ่มเติม:

  • หากคุณต้องการใช้งาน API key หรือมีการตั้งค่าอื่น ๆ ควรเก็บข้อมูลส่วนตัวอย่าง API key ในไฟล์ .env.local และใช้ process.env เพื่อเข้าถึงข้อมูลนี้.
  • ควรจัดการข้อผิดพลาดอย่างเหมาะสมเมื่อการเรียก API ไม่สำเร็จ โดยการใช้ try...catch หรือการส่งคำขอ error กลับไปยังเซิร์ฟเวอร์.
  • หากคุณต้องการใช้งานการยืนยันสิทธิ์แบบ Bearer Token หรือการส่งข้อมูลพื้นฐาน (Basic Authentication) คุณจะต้องกำหนด header ในคำขอ fetch ด้วย.