Apidog

Nền tảng phát triển API hợp tác tất cả trong một

Thiết kế API

Tài liệu API

Gỡ lỗi API

Giả lập API

Kiểm thử API tự động

Hướng Dẫn Tối Ưu Để Xây Dựng APIs Next.js: Một Cuộc Phiêu Lưu Đầy Ví Dụ

Tìm hiểu cách tạo API mạnh mẽ với Next.js thông qua một ví dụ từng bước. Khám phá lợi ích của việc sử dụng Next.js cho phát triển API và cách Apidog có thể tối ưu hóa quy trình làm việc của bạn.

Minh Triết

Minh Triết

Updated on tháng 11 29, 2024

Chào bạn, nhà phát triển đồng nghiệp! Bạn đã sẵn sàng để khám phá thế giới của Next.js và học cách tạo ra những API mạnh mẽ chưa? Trong bài viết này, chúng ta sẽ khám phá một ví dụ về API của Next.js, thảo luận về tầm quan trọng của các API và giới thiệu với bạn một công cụ tuyệt vời mang tên Apidog sẽ giúp bạn phát triển API một cách dễ dàng hơn bao giờ hết. Vậy hãy lấy thức uống yêu thích của bạn và bắt đầu thôi!

💡
Nhân tiện, nếu bạn đang tìm kiếm một công cụ dễ sử dụng để kiểm tra và tài liệu hóa các API của mình, hãy kiểm tra Apidog. Nó là một công cụ thay đổi cuộc chơi trong phát triển API, và bạn có thể tải Apidog miễn phí để làm cho quy trình làm việc của bạn mượt mà hơn!
button

Next.js là gì?

Trước khi chúng ta đi sâu vào các chi tiết của phát triển API, hãy cùng tìm hiểu Next.js là gì. Next.js là một framework React phổ biến cho phép các nhà phát triển xây dựng các ứng dụng React được render trên server một cách dễ dàng. Nó cung cấp các tính năng như tạo trang tĩnh, render phía server và một hệ thống routing API mạnh mẽ. Điều này làm cho nó trở thành một lựa chọn tuyệt vời cho việc xây dựng các ứng dụng web hiện đại.

Next JS official website

Tại sao nên sử dụng Next.js cho API?

Có lẽ bạn đang tự hỏi, tại sao tôi nên sử dụng Next.js cho API khi còn rất nhiều lựa chọn khác ngoài kia? Đây là một câu hỏi tuyệt vời! Dưới đây là một vài lý do hấp dẫn:

Sự đơn giản: Next.js cung cấp một cách đơn giản và trực quan để tạo các route API. Bạn không cần phải thiết lập một server riêng biệt hay cấu hình các middleware phức tạp. Tất cả đã được tích hợp sẵn!

Hiệu suất: Với Next.js, bạn có thể tận dụng render phía server và tạo trang tĩnh để tối ưu hóa hiệu suất của các API. Điều này có nghĩa là thời gian phản hồi nhanh hơn và trải nghiệm người dùng tốt hơn.

Tính linh hoạt: Next.js cho phép bạn sử dụng nhiều công nghệ backend khác nhau, bao gồm Node.js, Express, và nhiều hơn nữa. Bạn có thể chọn các công cụ phù hợp nhất với nhu cầu của bạn.

Thân thiện với SEO: Next.js được thiết kế với SEO trong tâm trí, giúp cho các API của bạn dễ dàng được phát hiện bởi các công cụ tìm kiếm.

Thiết lập dự án Next.js của bạn

Hãy bắt đầu với một dự án Next.js đơn giản. Nếu bạn chưa làm, bạn sẽ cần cài đặt Node.js và npm (hoặc yarn) trên máy tính của bạn. Khi đã xong, bạn có thể tạo một dự án Next.js mới bằng cách chạy lệnh sau:

npx create-next-app my-nextjs-api

Chuyển đến thư mục dự án của bạn:

cd my-nextjs-api

Giờ thì, hãy đi sâu vào việc tạo route API đầu tiên của chúng ta!

NextJs

Tạo route API đầu tiên của bạn với Next.js

Trong Next.js, các route API được lưu trữ trong thư mục pages/api. Hãy tạo một route API đơn giản trả về danh sách người dùng. Tạo một file mới có tên users.js trong thư mục pages/api:

mkdir -p pages/api
touch pages/api/users.js

Mở users.js và thêm đoạn mã sau:

// pages/api/users.js

export default function handler(req, res) {
  const users = [
    { id: 1, name: 'John Doe' },
    { id: 2, name: 'Jane Doe' },
  ];

  res.status(200).json(users);
}

Đoạn mã này xác định một route API cơ bản trả về danh sách người dùng. Hàm handler nhận hai tham số: req (đối tượng yêu cầu) và res (đối tượng phản hồi). Chúng ta sử dụng res.status(200).json(users) để gửi một phản hồi JSON với mã trạng thái 200 (OK).

Kiểm tra API của bạn

Để kiểm tra API mới của bạn, hãy khởi động server phát triển Next.js:

npm run dev

Mở trình duyệt của bạn và điều hướng đến http://localhost:3000/api/users. Bạn sẽ thấy một phản hồi JSON với danh sách người dùng:

[
  { "id": 1, "name": "John Doe" },
  { "id": 2, "name": "Jane Doe" }
]

Giới thiệu Apidog: Người bạn đồng hành phát triển API của bạn

Phát triển và kiểm tra API có thể là một nhiệm vụ khó khăn, nhưng với các công cụ phù hợp, điều đó trở nên dễ dàng. Đó là lúc Apidog xuất hiện. Apidog là một công cụ phát triển API tất cả trong một cho phép bạn thiết kế, kiểm tra và tài liệu hóa các API của mình một cách dễ dàng. Nó cung cấp một giao diện thân thiện với người dùng và những tính năng mạnh mẽ để đơn giản hóa quy trình làm việc của bạn.

button

Dưới đây là cách bạn có thể sử dụng Apidog để nâng cao quy trình làm việc của mình. Apidog cho phép bạn kiểm tra API của mình trực tiếp trong công cụ. Bạn có thể thực hiện các yêu cầu GET, POST, PUT và DELETE, và xem phản hồi theo thời gian thực.

Bước 1: Mở Apidog và tạo một yêu cầu mới.

Apidog

Bước 2: Tìm kiếm hoặc nhập thủ công các chi tiết API cho yêu cầu POST mà bạn muốn thực hiện.

Apidog

Bước 3: Điền vào các tham số cần thiết và bất kỳ dữ liệu nào bạn muốn đưa vào trong thân yêu cầu.

Apidog

Bằng cách tích hợp Apidog vào quy trình làm việc của bạn, bạn có thể tiết kiệm thời gian và tránh những cạm bẫy phổ biến trong phát triển API. Hơn nữa, nó hoàn toàn miễn phí để tải xuống và sử dụng!

Đừng chỉ nghe chúng tôi nói—hãy tải Apidog miễn phí và trải nghiệm sự khác biệt cho chính bạn!

Thêm độ phức tạp: Tham số truy vấn

Giờ đây, chúng ta đã có một route API cơ bản, hãy thêm một số phức tạp bằng cách xử lý các tham số truy vấn. Giả sử chúng ta muốn lọc danh sách người dùng dựa trên tên của họ. Chúng ta có thể đạt được điều này bằng cách sửa đổi file users.js của chúng ta:

// pages/api/users.js

export default function handler(req, res) {
  const { query } = req;
  const { name } = query;

  const users = [
    { id: 1, name: 'John Doe' },
    { id: 2, name: 'Jane Doe' },
  ];

  if (name) {
    const filteredUsers = users.filter(user => user.name.toLowerCase().includes(name.toLowerCase()));
    res.status(200).json(filteredUsers);
  } else {
    res.status(200).json(users);
  }
}

Với bản cập nhật này, API của chúng ta hiện có thể lọc người dùng dựa trên tham số truy vấn name. Ví dụ, điều hướng đến http://localhost:3000/api/users?name=john sẽ trả về:

[
  { "id": 1, "name": "John Doe" }
]

Xử lý các phương thức HTTP khác nhau

Các API thường cần xử lý các phương thức HTTP khác nhau như GET, POST, PUT và DELETE. Hãy sửa đổi file users.js của chúng ta để xử lý các yêu cầu POST cho việc thêm người dùng mới:

// pages/api/users.js

let users = [
  { id: 1, name: 'John Doe' },
  { id: 2, name: 'Jane Doe' },
];

export default function handler(req, res) {
  const { method } = req;

  switch (method) {
    case 'GET':
      res.status(200).json(users);
      break;
    case 'POST':
      const { name } = req.body;
      const newUser = { id: users.length + 1, name };
      users.push(newUser);
      res.status(201).json(newUser);
      break;
    default:
      res.setHeader('Allow', ['GET', 'POST']);
      res.status(405).end(`Phương thức ${method} không được phép`);
  }
}

Giờ đây, API của chúng ta có thể xử lý cả yêu cầu GET và POST. Để kiểm tra yêu cầu POST, bạn có thể sử dụng một công cụ như Postman hoặc tốt hơn nữa, Apidog. Thực hiện một yêu cầu POST đến http://localhost:3000/api/users với một thân JSON:

{
  "name": "Alice Smith"
}

Phản hồi sẽ là người dùng mới được tạo:

{
  "id": 3,
  "name": "Alice Smith"
}

Xử lý lỗi trong API Next.js

Xử lý lỗi mạnh mẽ là rất quan trọng cho bất kỳ API nào. Hãy nâng cao file users.js của chúng ta để bao gồm xử lý lỗi cho các yêu cầu không hợp lệ:

// pages/api/users.js

let users = [
  { id: 1, name: 'John Doe' },
  { id: 2, name: 'Jane Doe' },
];

export default function handler(req, res) {
  const { method } = req;

  switch (method) {
    case 'GET':
      res.status(200).json(users);
      break;
    case 'POST':
      const { name } = req.body;
      if (!name) {
        res.status(400).json({ error: 'Tên là bắt buộc' });
      } else {
        const newUser = { id: users.length + 1, name };
        users.push(newUser);
        res.status(201).json(newUser);
      }
      break;
    default:
      res.setHeader('Allow', ['GET', 'POST']);
      res.status(405).end(`Phương thức ${method} không được phép`);
  }
}

Giờ đây, nếu bạn cố gắng thực hiện một yêu cầu POST mà không có thuộc tính name trong thân yêu cầu, bạn sẽ nhận được một phản hồi lỗi:

{
  "error": "Tên là bắt buộc"
}

Bảo mật API Next.js của bạn

Bảo mật là ưu tiên hàng đầu cho bất kỳ API nào. Hãy thực hiện xác thực cơ bản cho các route API của chúng ta. Chúng ta sẽ sử dụng một khóa API để xác thực các yêu cầu. Đầu tiên, hãy tạo một biến môi trường mới cho khóa API của chúng ta. Tạo một file .env.local trong thư mục gốc của dự án:

API_KEY=mysecretapikey

Tiếp theo, cập nhật file users.js của bạn để bao gồm xác thực khóa API:

// pages/api/users.js

let users = [
  { id: 1, name: 'John Doe' },
  { id: 2, name: 'Jane Doe' },
];

export default function handler(req, res) {
  const { method, headers } = req;
  const apiKey = headers['x-api-key'];

  if (apiKey !== process.env.API_KEY) {
    return res.status(401).json({ error: 'Không được phép' });
  }

  switch (method) {
    case 'GET':
      res.status(200).json(users);
      break;
    case 'POST':
      const { name } = req.body;
      if (!name) {
        res.status(400).json({ error: 'Tên là bắt buộc' });
      } else {
        const newUser = { id: users.length + 1, name };
        users.push(newUser);
        res.status(201).json(newUser);
      }
      break;
    default:
      res.setHeader('Allow', ['GET', 'POST']);
      res.status(405).end(`Phương thức ${method} không được phép`);
  }
}

Giờ đây, các route API của bạn yêu cầu một khóa API để xác thực. Bao gồm tiêu đề x-api-key trong các yêu cầu của bạn để truy cập API:

{
  "x-api-key": "mysecretapikey"
}

Kết luận

Xây dựng API với Next.js thật sự thú vị và bổ ích. Chúng ta đã đề cập đến những điều cơ bản về việc tạo các route API, xử lý các phương thức HTTP khác nhau, xử lý lỗi và thêm bảo mật. Thêm vào đó, chúng ta đã giới thiệu cho bạn Apidog, một công cụ tuyệt vời để thiết kế, kiểm tra, và tài liệu hóa các API của bạn.

Dù bạn là một nhà phát triển dày dạn kinh nghiệm hay vừa mới bắt đầu, Next.js và Apidog cung cấp cho bạn những công cụ cần thiết để xây dựng các API mạnh mẽ và có thể mở rộng. Vậy bạn đang chờ đợi điều gì? Hãy bắt đầu xây dựng API Next.js của bạn ngay hôm nay, và đừng quên tải Apidog miễn phí để làm cho quy trình phát triển của bạn mượt mà hơn.

button