jb

Нейминг API

Главная ошибка в нейминге API - делать двойную работу поверх OpenAPI-схемы. Спецификация уже содержит названия сущностей, полей и операций, но в проекте их часто переопределяют вручную.

// openapi schema
interface User {
  id: string;
  name: string;
}

// project code
interface IUser {
  id: string;
  name: string;
}

Такой подход создает лишний оверхед: приходится поддерживать два набора одинаковых контрактов и постоянно держать их в синхроне. Как только API меняется, вы обновляете и схему, и вручную написанные типы/названия, а это повышает риск ошибок и рассинхрона.

Отдельный момент - наименование функций: рекомендуем собирать его от path запроса или от operationId, чтобы сохранить простую семантику и предсказуемость в API-клиенте.

import { fetches } from '@siberiacancode/fetches';

// openapi:
// GET /users/{id}
// operationId: getUserById

// плохо
const loadProfile = (id: string) => fetches.get<User>(`/users/${id}`);

// хорошо
const getUsersById = (id: string) => fetches.get<User>(`/users/${id}`);

// хорошо
const getUserById = (id: string) => fetches.get<User>(`/users/${id}`);

Таким образом мы убираем двойную работу, уменьшаем количество ручных маппингов и делаем API-слой предсказуемым для всей команды. Также рекомендуем использовать apicraft - он автоматически генерирует эту структуру, типы и клиентские функции.

Редактировать на GitHub