مستندات API باندی
با API باندی میتوانید محتوای وبلاگ خود را در هر پلتفرمی نمایش دهید. از وبسایت React گرفته تا اپلیکیشن موبایل.
نصب سریع
npm install @bondi/client @bondi/reactاحراز هویت
برای استفاده از API، به یک API Key نیاز دارید. کلید API را از پنل مدیریت تنانت خود دریافت کنید.
توجه: API Key را در کد سمت کلاینت قرار ندهید. از Server-Side rendering یا API Routes استفاده کنید.
curl -X GET "https://api.bondi.ir/v1/posts" \
-H "Authorization: Bearer sk_live_your_api_key" \
-H "Content-Type: application/json"Endpointها
Base URL: https://api.bondi.ir
GET
/v1/postsدریافت لیست پستها
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
page | number | شماره صفحه (پیشفرض: 1) |
limit | number | تعداد در صفحه (حداکثر: 50) |
status | string | وضعیت پست: PUBLISHED, DRAFT |
category | string | فیلتر بر اساس slug دستهبندی |
GET
/v1/posts/:slugدریافت یک پست با slug
GET
/v1/categoriesدریافت لیست دستهبندیها
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
page | number | شماره صفحه |
limit | number | تعداد در صفحه |
GET
/v1/mediaدریافت لیست فایلهای رسانه
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
page | number | شماره صفحه |
limit | number | تعداد در صفحه (حداکثر: 100) |
type | string | نوع فایل: image, video, audio, document |
GET
/v1/searchجستجو در پستها
پارامترها:
| نام | نوع | توضیح |
|---|---|---|
q* | string | عبارت جستجو (حداقل ۲ کاراکتر) |
page | number | شماره صفحه |
limit | number | تعداد در صفحه |
نمونه پاسخ
{
"data": [
{
"id": "clx...",
"title": "عنوان پست",
"slug": "post-slug",
"excerpt": "خلاصه پست...",
"featuredImage": "https://...",
"publishedAt": "2024-01-15T10:30:00Z",
"author": {
"id": "usr...",
"name": "نام نویسنده",
"avatar": "https://..."
},
"categories": [
{ "id": "cat...", "name": "تکنولوژی", "slug": "tech" }
],
"tags": [
{ "id": "tag...", "name": "React", "slug": "react" }
]
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 42,
"totalPages": 5,
"hasMore": true
}
}JavaScript SDK
SDK باندی استفاده از API را سادهتر میکند. TypeScript کامل پشتیبانی میشود.
import { BondiClient } from '@bondi/client';
const client = new BondiClient({
apiKey: 'sk_live_your_api_key',
baseUrl: 'https://api.bondi.ir'
});
// دریافت لیست پستها
const { data: posts, pagination } = await client.getPosts({
page: 1,
limit: 10
});
// دریافت یک پست
const post = await client.getPost('my-post-slug');
// جستجو
const results = await client.search('کلمه کلیدی');React Hooks
برای پروژههای React، از هوکهای آماده استفاده کنید.
هوکهای موجود:
usePosts()- دریافت لیست پستها با paginationusePost(slug)- دریافت یک پستuseCategories()- دریافت دستهبندیهاuseMedia()- دریافت فایلهای رسانهuseSearch(query)- جستجوuseInfinitePosts()- Infinite scroll
import { BondiProvider, usePosts, usePost } from '@bondi/react';
// در App.tsx
function App() {
return (
<BondiProvider
apiKey="sk_live_your_api_key"
baseUrl="https://api.bondi.ir"
>
<BlogList />
</BondiProvider>
);
}
// در کامپوننت
function BlogList() {
const { posts, loading, error, hasMore, loadMore } = usePosts();
if (loading) return <div>در حال بارگذاری...</div>;
if (error) return <div>خطا: {error.message}</div>;
return (
<div>
{posts.map(post => (
<article key={post.id}>
<h2>{post.title}</h2>
<p>{post.excerpt}</p>
</article>
))}
{hasMore && (
<button onClick={loadMore}>بارگذاری بیشتر</button>
)}
</div>
);
}مدیریت خطا
API در صورت بروز خطا، کدهای HTTP استاندارد برمیگرداند.
| کد | توضیح |
|---|---|
| 400 | پارامتر نامعتبر |
| 401 | API Key نامعتبر یا ارائه نشده |
| 403 | دسترسی غیرمجاز |
| 404 | منبع یافت نشد |
| 429 | تعداد درخواست بیش از حد مجاز |
| 500 | خطای سرور |
محدودیت درخواست
| پلن | درخواست در دقیقه | درخواست در روز |
|---|---|---|
| Free | 60 | 1,000 |
| Startup | 300 | 50,000 |
| Business | 1,000 | نامحدود |
| Enterprise | سفارشی | نامحدود |