Определение вложенного типа объекта JSON в Strawberry GraphQL с помощью FastAPI

У меня есть запрос API на создание пользователя со следующими входными данными:

id: int name: str location: {str: {x: str, y: str, z: str}} Я пытаюсь реализовать это в API GraphQL с использованием фреймворка Strawberry и FastAPI, но у меня возникли проблемы с определением типа для поля местоположения.

Контекст:

Я использую Strawberry для своего API GraphQL. Я использую FastAPI в качестве базового веб-фреймворка. Я хочу обрабатывать сложную структуру данных местоположения чистым и эффективным способом. ** Желаемые входные данные:**

{ "id": 1, "name": "John Doe", "location": { "home": { "x": "10.5", "y": "20.3", "z": "5.2" }, "work": { "x": "15.2", "y": "30.1", "z": "8.4" } } }

Желаемая мутация GraphQL:

mutation CreateUser($input: CreateUserInput!) { createUser(input: $input) { id name location { home { x y z } work { x y z } } } }

Я пробовал два подхода:

Использование Dict[str, Coordinates] type, где Coordinates — это тип с полями x, y и z, каждое из которых имеет тип str. Однако Strawberry не допускает Dict списков в определении типа. Использование скалярного типа JSON для поля location. Кажется, это работает, но когда я пытаюсь предоставить данные JSON для поля location, я получаю сообщение об ошибке, в котором говорится, что это недопустимый JSON. Можете ли вы помочь мне определить правильный тип для поля location в моей схеме Strawberry и привести пример того, как я могу использовать его в мутации GraphQL в GraphiQL?

Моя самая большая проблема в том, что home и work здесь не являются фиксированными значениями, они могут быть любыми str.

Семен
Вопрос задан2 апреля 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.