Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Научиться генерировать endpoint's для фронтенда на основе спецификации OpenAPI снегерированной FastAPI #64

Open
toadharvard opened this issue Sep 26, 2024 · 3 comments

Comments

@toadharvard
Copy link
Collaborator

https://fastapi.tiangolo.com/advanced/generate-clients/

@toadharvard toadharvard changed the title Научиться генерировать типы для фронтенда на основе спецификации OpenAPI снегерированной FastAPI Научиться генерировать endpoint's для фронтенда на основе спецификации OpenAPI снегерированной FastAPI Sep 26, 2024
@vladyoslav
Copy link
Contributor

vladyoslav commented Oct 17, 2024

Это же должен делать сам фронтенд, можно использовать @hey-api/openapi-ts

В бекенде желательно настроить generate_unique_id_function (чтобы на фронте генерировались нормальные названия функций):

app = FastAPI(
    lifespan=lifespan, generate_unique_id_function=lambda route: route.name
)

Конфиг для фронтенда openapi-ts.config.ts

import { defineConfig } from '@hey-api/openapi-ts'
import 'dotenv/config'

export default defineConfig({
  base: process.env.VITE_API_URI, // api эндпоинт
  input: `${process.env.VITE_API_URI}/openapi.json`, // url на спеку openapi.json
  output: {
    path: 'src/shared/api/__generated__', // папка, куда положить сгенерированные типы и api клиент
    lint: 'eslint',
    format: 'prettier'
  },
  services: { asClass: true },
  client: 'axios'
})

@toadharvard
Copy link
Collaborator Author

Это же должен делать сам фронтенд

Ага, так и есть. Но со стороны бекенда мы должны обязательно предоставлять эндпоинт, откуда можно достать спецификацию всех эндпоинтов.

Хороший конфиг ты указал, стоит показать нашим фронтендерам, когда будут переводить фронтенд на новый бек.

@vladyoslav
Copy link
Contributor

откуда можно достать спецификацию всех эндпоинтов.

По умолчанию спека располагается по адресу https://апи эндпоинт/openapi.json (например https://api.desbordemo.store/openapi.json)

Но @hey-api/openapi-ts умеет генерировать и из локального файла, и из бека, развернутого на локалхосте, так что с этим вроде не должно возникнуть проблем

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants