برنامه نویسی

توسعه آسان و سریع API با Bun و Hono: یک پروژه ساده در 5 دقیقه

Summarize this content to 400 words in Persian Lang

اخیراً مقالات ساده ای در مورد آن نوشتم اتصال و نان، و این مقاله یک پیگیری مرتبط است. در این مقاله نحوه ایجاد یک API ساده در مدت زمان کوتاه با استفاده از ترکیب Bun و Hono را معرفی می‌کنم تا نحوه راه‌اندازی یک محیط اولیه از اینها را بیاموزم. در حالی که مقداری همپوشانی با محتوای قبلی وجود دارد، من ترکیب Bun و Hono را به وضوح مشخص نکرده بودم، بنابراین هدف این مقاله تکمیل آن است، با تمرکز بر استفاده از Bun و Hono. در واقع، محتوا به گونه ای نوشته شده است که ساده باشد و برای مبتدیان هدف قرار گیرد.

ابتدا مرور کلی Bun و Hono را مرور می کنیم:

Bun: زمان اجرا جاوا اسکریپت که امکان ساخت و اجرای سریعتر را در مقایسه با Node.js فراهم می کند. سبک وزن و مجهز به قابلیت بارگذاری مجدد داغ است که تجربه توسعه بسیار روانی را ایجاد می کند.
Hono: چارچوب وب سبک بر اساس TypeScript، ایده آل برای ساخت API های ساده. دارای پشتیبانی قوی از TypeScript و مسیریابی بصری است.

چرا Bun و Hono را ترکیب می کنیم؟

دلیل علاقه من به Bun و Hono این است که معتقدم آنها می توانند گزینه بهتری برای توسعه دهندگانی باشند که در حال حاضر از Node.js و Express استفاده می کنند.

Bun به عنوان یک زمان اجرا جاوا اسکریپت با هدف عملکرد سریعتر از Node.js توسعه یافته است، در حالی که Hono را می توان به عنوان نسل بعدی Express.js توصیف کرد که یک چارچوب وب سبک و سریع است. هر دو دارای مزایای مناسب برای محیط های توسعه مدرن هستند، مانند ابزارهای داخلی، پشتیبانی عالی از TypeScript و بهینه سازی برای محیط های ابری و لبه.

البته Bun و Hono هر کدام نقاط قوت و ضعف خود را دارند و ممکن است لازم باشد بر اساس موارد استفاده خود انتخاب کنید. علاوه بر این، حتی اگر از Bun استفاده می کنید، ممکن است شرایطی وجود داشته باشد که آن را با Node.js ترکیب کنید. با این حال، من معتقدم که یادگیری و درک این ابزار هرگز هدر نخواهد بود. با ترکیب فناوری های جدید، امکان توسعه برنامه های کاربردی کارآمدتر و با کارایی بالا را باز می کنید.

در این مقاله نحوه ساخت سریع یک API ساده با استفاده از Bun و Hono را با هدف قرار دادن مبتدیان معرفی خواهم کرد. اگرچه کارهای بیشتری می توان با Bun و Hono انجام داد، این مقاله همه چیز را پوشش نمی دهد. با این حال، از طریق مراحل این مقاله، امیدوارم بتوانید درک اولیه ای از راه اندازی و ساخت با Bun و Hono به دست آورید که برای یادگیری بیشتر مفید خواهد بود.

ابتدا اجازه دهید محیط توسعه را تنظیم کنیم. من قبلاً مقالاتی در مورد راه اندازی Hono و Bun به صورت جداگانه نوشته ام، بنابراین در این مقاله مراحل را به طور خلاصه بیان می کنم.

ابتدا اجازه دهید Bun را با دستور زیر نصب کنیم:

curl https://bun.sh/install | bash

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از اتمام نصب، نسخه را بررسی کنید:

bun –version

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

دایرکتوری پروژه را با دستور زیر ایجاد کنید:

mkdir bun-hono-api
cd bun-hono-api

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سپس محیط Bun را با دستور زیر تنظیم کنید:

bun init

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بعد، Hono را نصب کنید:

bun add hono

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حالا بیایید وارد موضوع اصلی شویم. ما ایجاد خواهیم کرد index.ts فایل، نمونه سازی Hono، و تعریف نقاط پایانی ساده.

import { Hono } from ‘hono’;

const app = new Hono();

// Simple API Endpoint
app.get(‘/’, (c) => c.text(‘Hello, World!’));

app.get(‘/greet/:name’, (c) => {
const name = c.req.param(‘name’);
return c.text(`Hello, ${name}!`);
});

// Bun Server
Bun.serve({
fetch(req) {
// Hono API
return app.fetch(req);
},
port: 3000,
});

console.log(‘Server running on http://localhost:3000’);

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این کد، / نقطه پایانی باز خواهد گشت “Hello, World!” و /greet/:name endpoint یک پیام تبریک با استفاده از نام کاربر نمایش می دهد.

سپس با اجرای دستور زیر سرور را با استفاده از Bun راه اندازی می کنیم:

bun run index.ts

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر ترمینال نشان دهد Server running on http://localhost:3000، یعنی سرور با موفقیت راه اندازی شده است.

در نهایت، بیایید بررسی کنیم که آیا سرور به درستی کار می کند یا خیر. از یک مرورگر یا دستور curl برای دسترسی به دو نقطه پایانی زیر استفاده کنید:

/: “سلام، جهان!”
/greet/:name: “سلام، {name}!”

این نقاط پایانی با استفاده از پارامترهای نامگذاری شده پاسخ های پویا تولید می کنند. هنگامی که به مسیر URL /greet/{name} دسترسی پیدا می کنید، یک پیام تبریک بر اساس نام مشخص شده ایجاد می کند.

دویدن را امتحان کنید curl http://localhost:3000/greet/ و curl http://localhost:3000/greet/terry از ترمینال برای دیدن خروجی. در این مورد، ما از ترمینال استفاده می کنیم، اما شما همچنین می توانید از ابزارهای تست API مانند پستچی برای بررسی عملکرد نقاط پایانی.

به هر حال، هنگام نوشتن این بخش با استفاده از Express، کد کاملاً مشابه به نظر می رسد، اما Hono به جای اشیاء درخواست/پاسخ جداگانه، از یک شی زمینه (c) استفاده می کند، که کد را پاک تر و قابل درک تر می کند. شخصاً آن را شهودی تر می دانم، به همین دلیل آن را دوست دارم.

به عنوان یک امتیاز، اجازه دهید یک نقطه پایانی ایجاد کنیم که a را برمی گرداند JSON پاسخ کد زیر را به فایل index.ts خود اضافه کنید:

app.get(‘/users’, (c) => {
return c.json([
{ id: 1, name: ‘John Doe’ },
{ id: 2, name: ‘Jane Smith’ },
{ id: 3, name: ‘Alice Johnson’ },
{ id: 4, name: ‘Bob Brown’ },
{ id: 5, name: ‘Charlie Davis’ },
{ id: 6, name: ‘Eve Wilson’ },
{ id: 7, name: ‘Frank Thompson’ },
{ id: 8, name: ‘Grace Lee’ },
{ id: 9, name: ‘Henry White’ },
{ id: 10, name: ‘Ivy Green’ }
]);
});

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این نقطه پایانی هنگام دسترسی، اطلاعات کاربر را در قالب JSON برمی گرداند /users. با استفاده از c.json() روش، می توانید یک شی را به عنوان پاسخ JSON برگردانید.

می توانید به راحتی این پاسخ JSON را با استفاده از دستور زیر آزمایش کنید:

curl http://localhost:3000/users

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگامی که این دستور را اجرا می کنید، باید یک پاسخ JSON مانند زیر مشاهده کنید:

[
{ id: 1, name: ‘John Doe’ },
{ id: 2, name: ‘Jane Smith’ },
{ id: 3, name: ‘Alice Johnson’ },
{ id: 4, name: ‘Bob Brown’ },
{ id: 5, name: ‘Charlie Davis’ },
{ id: 6, name: ‘Eve Wilson’ },
{ id: 7, name: ‘Frank Thompson’ },
{ id: 8, name: ‘Grace Lee’ },
{ id: 9, name: ‘Henry White’ },
{ id: 10, name: ‘Ivy Green’ }
]

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

شما همچنین می توانید این را در Postman یا مرورگر خود بررسی کنید. با تغییر محتوای پاسخ برای دیدن خروجی های مختلف، آزادانه آزمایش کنید.

علاوه بر این، می‌توانید با ترکیب APIهای خارجی با کد خود، مانند این مثال، بازی کنید:

// Endpoints to obtain user information from external APIs
app.get(‘/external-users’, async (c) => {
// JSONPlaceholder API
const response = await fetch(‘https://jsonplaceholder.typicode.com/users’);
const users = await response.json();

// Return data acquired from external APIs to the client in JSON format
return c.json(users);
});

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای کسانی که در حال حاضر با Node.js و Express در حال توسعه هستند، همانطور که از محتوای این مقاله می بینید، نحوه نوشتن و ساختار کد در Hono و Express بسیار شبیه است. با این حال، Hono ویژگی‌های قابل توجهی مانند بهینه‌سازی برای محیط‌های ابری و لبه، پشتیبانی عالی از TypeScript و تعداد زیادی ابزار داخلی را ارائه می‌دهد که آن را به ویژه جذاب می‌کند.

علاوه بر این، در مورد Bun، به عنوان یک زمان اجرا جایگزین برای Node.js مورد توجه قرار گرفته است که عملکرد فوق العاده سریع و سبکی را ارائه می دهد. مانند Hono، Bun نیز از TypeScript پشتیبانی عالی دارد و به دلیل ابزارهای ساخت و مدیریت بسته یکپارچه خود متمایز است. از آنجایی که اکثر کدهای Node.js تقریباً همانطور که هست اجرا می‌شوند، استفاده از Bun می‌تواند تجربه توسعه روان‌تر و کارآمدتری را ارائه دهد.

اگرچه در این مقاله نمی‌توانیم همه چیز را با جزئیات پوشش دهیم، ترکیب Hono و Bun می‌تواند به گزینه‌ای بسیار قدرتمند برای توسعه وب آینده تبدیل شود. من همه شما را تشویق می کنم که Hono و Bun را کشف کنید و آنها را امتحان کنید.

با تشکر از شما برای خواندن!

اخیراً مقالات ساده ای در مورد آن نوشتم اتصال و نان، و این مقاله یک پیگیری مرتبط است. در این مقاله نحوه ایجاد یک API ساده در مدت زمان کوتاه با استفاده از ترکیب Bun و Hono را معرفی می‌کنم تا نحوه راه‌اندازی یک محیط اولیه از اینها را بیاموزم. در حالی که مقداری همپوشانی با محتوای قبلی وجود دارد، من ترکیب Bun و Hono را به وضوح مشخص نکرده بودم، بنابراین هدف این مقاله تکمیل آن است، با تمرکز بر استفاده از Bun و Hono. در واقع، محتوا به گونه ای نوشته شده است که ساده باشد و برای مبتدیان هدف قرار گیرد.

ابتدا مرور کلی Bun و Hono را مرور می کنیم:

  • Bun: زمان اجرا جاوا اسکریپت که امکان ساخت و اجرای سریعتر را در مقایسه با Node.js فراهم می کند. سبک وزن و مجهز به قابلیت بارگذاری مجدد داغ است که تجربه توسعه بسیار روانی را ایجاد می کند.
  • Hono: چارچوب وب سبک بر اساس TypeScript، ایده آل برای ساخت API های ساده. دارای پشتیبانی قوی از TypeScript و مسیریابی بصری است.

توضیحات تصویر

چرا Bun و Hono را ترکیب می کنیم؟

دلیل علاقه من به Bun و Hono این است که معتقدم آنها می توانند گزینه بهتری برای توسعه دهندگانی باشند که در حال حاضر از Node.js و Express استفاده می کنند.

Bun به عنوان یک زمان اجرا جاوا اسکریپت با هدف عملکرد سریعتر از Node.js توسعه یافته است، در حالی که Hono را می توان به عنوان نسل بعدی Express.js توصیف کرد که یک چارچوب وب سبک و سریع است. هر دو دارای مزایای مناسب برای محیط های توسعه مدرن هستند، مانند ابزارهای داخلی، پشتیبانی عالی از TypeScript و بهینه سازی برای محیط های ابری و لبه.

البته Bun و Hono هر کدام نقاط قوت و ضعف خود را دارند و ممکن است لازم باشد بر اساس موارد استفاده خود انتخاب کنید. علاوه بر این، حتی اگر از Bun استفاده می کنید، ممکن است شرایطی وجود داشته باشد که آن را با Node.js ترکیب کنید. با این حال، من معتقدم که یادگیری و درک این ابزار هرگز هدر نخواهد بود. با ترکیب فناوری های جدید، امکان توسعه برنامه های کاربردی کارآمدتر و با کارایی بالا را باز می کنید.

در این مقاله نحوه ساخت سریع یک API ساده با استفاده از Bun و Hono را با هدف قرار دادن مبتدیان معرفی خواهم کرد. اگرچه کارهای بیشتری می توان با Bun و Hono انجام داد، این مقاله همه چیز را پوشش نمی دهد. با این حال، از طریق مراحل این مقاله، امیدوارم بتوانید درک اولیه ای از راه اندازی و ساخت با Bun و Hono به دست آورید که برای یادگیری بیشتر مفید خواهد بود.

توضیحات تصویر

ابتدا اجازه دهید محیط توسعه را تنظیم کنیم. من قبلاً مقالاتی در مورد راه اندازی Hono و Bun به صورت جداگانه نوشته ام، بنابراین در این مقاله مراحل را به طور خلاصه بیان می کنم.

ابتدا اجازه دهید Bun را با دستور زیر نصب کنیم:

curl https://bun.sh/install | bash
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از اتمام نصب، نسخه را بررسی کنید:

bun --version
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

دایرکتوری پروژه را با دستور زیر ایجاد کنید:

mkdir bun-hono-api
cd bun-hono-api
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سپس محیط Bun را با دستور زیر تنظیم کنید:

bun init
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بعد، Hono را نصب کنید:

bun add hono
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

حالا بیایید وارد موضوع اصلی شویم. ما ایجاد خواهیم کرد index.ts فایل، نمونه سازی Hono، و تعریف نقاط پایانی ساده.

import { Hono } from 'hono';

const app = new Hono();

// Simple API Endpoint
app.get('/', (c) => c.text('Hello, World!'));

app.get('/greet/:name', (c) => {
  const name = c.req.param('name');
  return c.text(`Hello, ${name}!`);
});

// Bun Server
Bun.serve({
  fetch(req) {
    // Hono API
    return app.fetch(req);
  },
  port: 3000,
});

console.log('Server running on http://localhost:3000');
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این کد، / نقطه پایانی باز خواهد گشت "Hello, World!" و /greet/:name endpoint یک پیام تبریک با استفاده از نام کاربر نمایش می دهد.

سپس با اجرای دستور زیر سرور را با استفاده از Bun راه اندازی می کنیم:

bun run index.ts
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر ترمینال نشان دهد Server running on http://localhost:3000، یعنی سرور با موفقیت راه اندازی شده است.

در نهایت، بیایید بررسی کنیم که آیا سرور به درستی کار می کند یا خیر. از یک مرورگر یا دستور curl برای دسترسی به دو نقطه پایانی زیر استفاده کنید:

  • /: “سلام، جهان!”
  • /greet/:name: “سلام، {name}!”
    • این نقاط پایانی با استفاده از پارامترهای نامگذاری شده پاسخ های پویا تولید می کنند. هنگامی که به مسیر URL /greet/{name} دسترسی پیدا می کنید، یک پیام تبریک بر اساس نام مشخص شده ایجاد می کند.

دویدن را امتحان کنید curl http://localhost:3000/greet/ و curl http://localhost:3000/greet/terry از ترمینال برای دیدن خروجی. در این مورد، ما از ترمینال استفاده می کنیم، اما شما همچنین می توانید از ابزارهای تست API مانند پستچی برای بررسی عملکرد نقاط پایانی.

به هر حال، هنگام نوشتن این بخش با استفاده از Express، کد کاملاً مشابه به نظر می رسد، اما Hono به جای اشیاء درخواست/پاسخ جداگانه، از یک شی زمینه (c) استفاده می کند، که کد را پاک تر و قابل درک تر می کند. شخصاً آن را شهودی تر می دانم، به همین دلیل آن را دوست دارم.

توضیحات تصویر

به عنوان یک امتیاز، اجازه دهید یک نقطه پایانی ایجاد کنیم که a را برمی گرداند JSON پاسخ کد زیر را به فایل index.ts خود اضافه کنید:

app.get('/users', (c) => {
  return c.json([
    { id: 1, name: 'John Doe' },
    { id: 2, name: 'Jane Smith' },
    { id: 3, name: 'Alice Johnson' },
    { id: 4, name: 'Bob Brown' },
    { id: 5, name: 'Charlie Davis' },
    { id: 6, name: 'Eve Wilson' },
    { id: 7, name: 'Frank Thompson' },
    { id: 8, name: 'Grace Lee' },
    { id: 9, name: 'Henry White' },
    { id: 10, name: 'Ivy Green' }
  ]);
});
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این نقطه پایانی هنگام دسترسی، اطلاعات کاربر را در قالب JSON برمی گرداند /users. با استفاده از c.json() روش، می توانید یک شی را به عنوان پاسخ JSON برگردانید.

می توانید به راحتی این پاسخ JSON را با استفاده از دستور زیر آزمایش کنید:

curl http://localhost:3000/users
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگامی که این دستور را اجرا می کنید، باید یک پاسخ JSON مانند زیر مشاهده کنید:

[
    { id: 1, name: 'John Doe' },
    { id: 2, name: 'Jane Smith' },
    { id: 3, name: 'Alice Johnson' },
    { id: 4, name: 'Bob Brown' },
    { id: 5, name: 'Charlie Davis' },
    { id: 6, name: 'Eve Wilson' },
    { id: 7, name: 'Frank Thompson' },
    { id: 8, name: 'Grace Lee' },
    { id: 9, name: 'Henry White' },
    { id: 10, name: 'Ivy Green' }
]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

شما همچنین می توانید این را در Postman یا مرورگر خود بررسی کنید. با تغییر محتوای پاسخ برای دیدن خروجی های مختلف، آزادانه آزمایش کنید.

علاوه بر این، می‌توانید با ترکیب APIهای خارجی با کد خود، مانند این مثال، بازی کنید:

// Endpoints to obtain user information from external APIs
app.get('/external-users', async (c) => {
  // JSONPlaceholder API
  const response = await fetch('https://jsonplaceholder.typicode.com/users');
  const users = await response.json();

  // Return data acquired from external APIs to the client in JSON format
  return c.json(users);
});
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای کسانی که در حال حاضر با Node.js و Express در حال توسعه هستند، همانطور که از محتوای این مقاله می بینید، نحوه نوشتن و ساختار کد در Hono و Express بسیار شبیه است. با این حال، Hono ویژگی‌های قابل توجهی مانند بهینه‌سازی برای محیط‌های ابری و لبه، پشتیبانی عالی از TypeScript و تعداد زیادی ابزار داخلی را ارائه می‌دهد که آن را به ویژه جذاب می‌کند.

علاوه بر این، در مورد Bun، به عنوان یک زمان اجرا جایگزین برای Node.js مورد توجه قرار گرفته است که عملکرد فوق العاده سریع و سبکی را ارائه می دهد. مانند Hono، Bun نیز از TypeScript پشتیبانی عالی دارد و به دلیل ابزارهای ساخت و مدیریت بسته یکپارچه خود متمایز است. از آنجایی که اکثر کدهای Node.js تقریباً همانطور که هست اجرا می‌شوند، استفاده از Bun می‌تواند تجربه توسعه روان‌تر و کارآمدتری را ارائه دهد.

اگرچه در این مقاله نمی‌توانیم همه چیز را با جزئیات پوشش دهیم، ترکیب Hono و Bun می‌تواند به گزینه‌ای بسیار قدرتمند برای توسعه وب آینده تبدیل شود. من همه شما را تشویق می کنم که Hono و Bun را کشف کنید و آنها را امتحان کنید.

با تشکر از شما برای خواندن!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا