Сделайте GET /menu для списка команд и POST /menu для выбора. Команда завершения должна завершать пользовательский сценарий, а не останавливать сервер.
Разработать FastAPI‑сервис с меню команд
Сделайте GET /menu для списка команд и POST /menu для выбора. Команда завершения должна завершать пользовательский сценарий, а не останавливать сервер.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Реализовать приложение на FastAPI. Добавить маршрут /menu, который:
- Возвращает перечень доступных команд
- Принимает номер выбранной команды через запрос (например, POST с JSON‑тело)
- Выполняет соответствующее действие в зависимости от выбранной команды (заглушки можно реализовать через
printили вернуть простое сообщение)
Доступные команды:
- Вывести список пользователей
- Создать нового пользователя
- Удалить пользователя
- Завершить работу
Пример тела запроса к /menu:
{
"command_id": 2
}
Ответ
Сделайте GET /menu для списка команд и POST /menu для выбора. Команда завершения должна завершать пользовательский сценарий, а не останавливать сервер.
from fastapi import FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
COMMANDS = {1: 'Список пользователей', 2: 'Создать пользователя',
3: 'Удалить пользователя', 4: 'Завершить работу'}
class Choice(BaseModel):
command_id: int = Field(strict=True, ge=1, le=4)
@app.get('/menu')
def menu():
return [{'id': key, 'title': value} for key, value in COMMANDS.items()]
@app.post('/menu')
def choose(choice: Choice):
messages = {1: 'Показ списка: демонстрационный режим',
2: 'Создание: демонстрационный режим',
3: 'Удаление: демонстрационный режим',
4: 'Работа с меню завершена'}
return {'message': messages[choice.command_id]}
Действия здесь намеренно демонстрационные, как разрешает условие. Для реального создания и удаления понадобятся дополнительные параметры, авторизация и проверки прав. Не выполняйте exit() из HTTP-обработчика.