feat: добавить ручной runtime-клиент
- добавлен корневой runtime export HttpClient и createApiClient - настроена сборка JS и d.ts для публичного API пакета - добавлен тест ручной сборки operations через createApiClient - добавлена документация по ручному клиенту без OpenAPI - версия пакета поднята до 5.1.0
This commit is contained in:
60
README.md
60
README.md
@@ -343,6 +343,66 @@ await api.users.getAll(
|
||||
);
|
||||
```
|
||||
|
||||
## Ручной Клиент Без OpenAPI
|
||||
|
||||
Если в проекте нет OpenAPI спецификации, можно использовать `HttpClient` напрямую из пакета и писать operation-функции вручную тем же стилем, который использует generated SDK.
|
||||
|
||||
В этом сценарии `@gromlab/api-codegen` должен быть зависимостью проекта:
|
||||
|
||||
```bash
|
||||
bun add @gromlab/api-codegen
|
||||
```
|
||||
|
||||
Пример ручной операции:
|
||||
|
||||
```typescript
|
||||
import {
|
||||
ContentType,
|
||||
HttpClient,
|
||||
createApiClient,
|
||||
type ApiRequestClient,
|
||||
type RequestParams,
|
||||
} from '@gromlab/api-codegen';
|
||||
|
||||
type User = {
|
||||
id: string;
|
||||
email: string;
|
||||
};
|
||||
|
||||
type CreateUserPayload = {
|
||||
email: string;
|
||||
};
|
||||
|
||||
export const createUser = (
|
||||
http: ApiRequestClient,
|
||||
body: CreateUserPayload,
|
||||
requestParams: RequestParams = {},
|
||||
) =>
|
||||
http.request<User>({
|
||||
path: '/users',
|
||||
method: 'POST',
|
||||
body,
|
||||
type: ContentType.Json,
|
||||
format: 'json',
|
||||
secure: true,
|
||||
...requestParams,
|
||||
});
|
||||
|
||||
const http = new HttpClient({
|
||||
baseUrl: 'https://api.example.com',
|
||||
});
|
||||
|
||||
export const api = createApiClient(http, {
|
||||
users: {
|
||||
create: createUser,
|
||||
},
|
||||
});
|
||||
|
||||
const user = await api.users.create({ email: 'user@example.com' });
|
||||
```
|
||||
|
||||
Ручной режим не связан с автогенерацией. Если вы запускаете `npx @gromlab/api-codegen` и генерируете REST SDK из OpenAPI, generated-код по-прежнему содержит и экспортирует собственные `HttpClient`, `createApiClient`, types и operations без runtime-зависимости от `@gromlab/api-codegen`.
|
||||
|
||||
## API Как npm-Пакет
|
||||
|
||||
Типичный workflow:
|
||||
|
||||
Reference in New Issue
Block a user