успешно скопирован!
API docs

Документация API TheFrontend

Простая инструкция для работы с API: сначала откройте готовую ссылку, потом попробуйте fetch-запрос, а затем создавайте категории, посты и комментарии.

Base URL

https://front.bilimai.kg/api

Token

Это ваш ключ доступа. Добавляйте его в конец URL.

Format

API возвращает JSON: данные в формате для JavaScript.

Content-Type

application/json

Limit

До 100 записей на категорию сущности.

Для самых новичков

Что здесь происходит?

API - это ссылка, по которой ваш frontend получает или отправляет данные. Вы открываете URL или вызываете его через fetch, а сервер возвращает JSON.

Получить токен

API-ссылка

Обычная ссылка, например /api/personal. Она отдаёт данные.

Token

Ваш личный ключ. Без него API не поймёт, какие данные показать.

JSON

Формат данных для JavaScript. Похож на объект: {"status":"success"}.

Быстрый старт: первый запрос

Самый лёгкий способ проверить API - открыть ссылку в браузере. Если вы авторизованы и токен правильный, вы увидите JSON со списком клиентов.

https://front.bilimai.kg/api/personal?token=your_token
1

Скопируйте ссылку

Это готовый GET-запрос. Его можно открыть даже без кода.

2

Посмотрите JSON

JSON - это ответ сервера. Его потом читает ваш JavaScript.

3

Подключите fetch

Когда ссылка работает в браузере, вставьте её в пример с fetch.

Авторизация

Почти все API-ссылки требуют токен. Токен добавляется в конец URL после знака вопроса: ?token=your_token. Если токен неверный, API вернёт `401`.

https://front.bilimai.kg/api/category?token=your_token

Как читать методы

GET - получить данные. Обычно можно открыть прямо в браузере.
POST - создать новую запись. Нужно отправить JSON в body.
PUT/PATCH - изменить запись. Обычно нужен ID записи.
DELETE - удалить запись. Используйте аккуратно.

API-ссылки

Endpoint - это просто API-ссылка. В таблице показано, какой метод использовать, какой путь открыть и какие данные передать.

Метод Путь Назначение Что передать
GET/api/personalСписок клиентов активного пользователяtoken
GET/api/categoryСписок категорийtoken
GET/api/category/parentДерево категорийtoken
GET/api/category/{id}Одна категория с цепочкой родителейtoken
POST/api/categoryСоздать категориюtitle, title_en, description, description_en, image
PUT/api/category/{id}Обновить категориюЛюбое из редактируемых полей
PATCH/api/category/{id}Изменить статус категорииstatus: boolean
DELETE/api/category/{id}Удалить категорию без связанных постовtoken
GET/api/postСписок постовtoken
GET/api/post/{id}Пост с лайкамиtoken
GET/api/post/comment/{id}Пост с комментариями и лайкамиtoken
POST/api/postСоздать постtitle, title_en, description, description_en, image, image_en, category_id
PUT/api/post/{id}Обновить постЛюбое из редактируемых полей
PATCH/api/post/{id}Опубликовать или скрыть постis_published: boolean
DELETE/api/post/{id}Удалить пост, комментарии и лайкиtoken
GET/api/commentДерево комментариев постаpost_id, token
POST/api/commentСоздать комментарийpost_id, comment, comment_en

Примеры запросов

Начните с первого примера. Он просто получает данные и выводит их в консоль браузера.

Самый простой fetch

Подходит для первого теста в JavaScript.

const response = await fetch("https://front.bilimai.kg/api/personal?token=your_token");
const data = await response.json();

console.log(data);

Универсальная функция fetch

Используйте, когда будете делать GET, POST, PUT, PATCH и DELETE.

const API_BASE = "https://front.bilimai.kg/api";
const TOKEN = "your_token";

async function apiRequest(path, { method = "GET", body } = {}) {
  const url = new URL(`${API_BASE}${path}`);
  url.searchParams.set("token", TOKEN);

  const response = await fetch(url, {
    method,
    headers: { "Content-Type": "application/json" },
    body: body ? JSON.stringify(body) : undefined,
  });

  const data = await response.json();

  if (!response.ok) {
    throw new Error(data.message || `HTTP ${response.status}`);
  }

  return data;
}

Создать категорию

await apiRequest("/category", {
  method: "POST",
  body: {
    title: "Новости",
    title_en: "News",
    description: "Раздел новостей",
    description_en: "News section",
    image: "https://example.com/category.jpg",
    parent_id: null
  }
});

Изменить статус категории

await apiRequest("/category/12", {
  method: "PATCH",
  body: { status: false }
});

Создать пост

await apiRequest("/post", {
  method: "POST",
  body: {
    category_id: 12,
    title: "Первый пост",
    title_en: "First post",
    description: "Короткое описание",
    description_en: "Short description",
    image: "https://example.com/post.jpg",
    image_en: "https://example.com/post-en.jpg"
  }
});

Создать комментарий

await apiRequest("/comment", {
  method: "POST",
  body: {
    post_id: 34,
    comment: "Отличный материал",
    comment_en: "Great article",
    parent_id: null
  }
});

Поля и правила

Category

Обязательные при создании: `title`, `title_en`, `description`, `description_en`, `image`. `parent_id` необязателен и должен принадлежать этому же пользователю.

Post

Обязательные при создании: `category_id`, `title`, `title_en`, `description`, `description_en`, `image`, `image_en`. `client_id` можно передать при необходимости.

Comment

Обязательные при создании: `post_id`, `comment`, `comment_en`. Для ответа на другой комментарий передайте `parent_id`.

Статусы ответов

200 - успешное получение или обновление данных.
201 - запись успешно создана.
400 - нет данных для обновления или действие запрещено из-за связанных данных.
401 - неверный или отсутствующий токен.
404 - запись не найдена или не принадлежит текущему пользователю.
422 - Laravel validation error: не передано обязательное поле или поле неверного формата.

Частые ошибки новичков

Вижу 401. Проверьте, что в URL есть ?token=ваш_токен, и токен скопирован полностью.
Вижу 422. Значит не хватает обязательного поля. Например, для поста нужны title, title_en, description, description_en, image, image_en, category_id.
GET работает, а POST нет. Для POST нужно отправлять JSON body и заголовок Content-Type: application/json.
Вижу 404. Проверьте ID записи. API показывает только записи, которые принадлежат вашему аккаунту.

Готовы попробовать API?

Зарегистрируйтесь, получите токен и начните собирать интерфейсы на реальных данных.

Получить токен