Установка GraphQL iOS Framework

Я хочу добавить фреймворк apollo в свой проект iOS. Я следую документация, но не могу его построить.

  1. Я устанавливаю apollo через cocoapods
  2. Я добавляю к своей цели этап сборки кода (поместите его выше источников компиляции ...)
  3. Я загружаю схему через схему apollo: download --endpoint = http: // локальный: 4000 / graphql schema.json. Я добавляю файл schema.json в корневой каталог своего проекта.
  4. Я собираю его и получаю следующую ошибку:

    • [email protected] добавила 416 пакетов за 20.385 сек. ++ exec /Users/PATH/node_modules/.bin/apollo codegen: генерировать --queries = --schema = schema.json API.swift ›Предупреждение: обновление apollo доступно с 1.2.0 до 1.7.0 ›Ошибка: Flag --queries ожидает значение
      Команда / bin / sh завершилась неудачно с кодом выхода 2

Мой файл schema.grapqhl выглядит примерно так:

type Query {
  """ User """
  users: [User!]!
  user(username: String!): User

  """ Question """
  questions: [Question!]!
  question(id: Int!): Question

  }

  type Mutation {
  """ User """
    createUser(username: String!): User
    updateUser(username: String!, newUsername: String!): [Int!]!
    deleteUser(username: String!): Int!

  """ Question """
    createQuestion(text: String!, category: Int!, active: Boolean!): 
    Question
    updateQuestion(id: Int!, text: String!, category: Int!, active: Boolean!): [Int!]!
    deleteQuestion(id: Int!): Int!
 }

 type Subscription {
   answerAdded: Answer
 }

 type Question {
  id: Int!
  text: String!
  categoryId: QuestionCategory!
  active: Boolean!
  createdAt: String!
  updatedAt: String!
  }
  ......

Кажется, что параметр запроса не имеет ввода: apollo codegen: сгенерировать --queries = --schema = schema.json API.swift

Если я сам попробую через терминал

apollo codegen:generate --queries=schema.graphql --schema=schema.json API.swift

Я получаю следующую ошибку:

Warning: apollo update available from 1.2.0 to 1.7.0
.../schema.graphql: The Query definition is not executable.
.../schema.graphql: The Mutation definition is not executable.
.../schema.graphql: The Subscription definition is not executable.
.../schema.graphql: The Question definition is not executable.
... some more ...
:heavy_check_mark: Scanning for GraphQL queries (1 found)
:heavy_check_mark: Loading GraphQL schema
:heavy_check_mark: Parsing GraphQL schema
:heavy_multiplication_x: Generating query files with 'swift' target
 → Validation of GraphQL query document failed
ToolError: Validation of GraphQL query document failed
at Object.validateQueryDocument 
....

Не могли бы вы помочь узнать, почему я не могу собрать проект? Это потому, что мой файл schema.graphl неверен?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
749
2

Ответы 2

Благодаря Мартейн Вальравен на открытом канале Apollo Slack iOS я решил эту проблему.

Проблема в том, что мой файл schema.graphql неверен.

your schema.graphql file is a representation of your schema in the schema definition language, not a query document. apollo ios expects you to define the queries your app uses in .graphql files, so it can generate code from them. these are the queries the client sends to the server, similar to what you would put in graphiql for example

... queries need to be named. so if you put this in a .graphql file:

query AllQuestions {
  queries {
    text
  }
}

that will generate a AllQuestionsQuery swift class that you can pass to client.fetch(query:) and it will also generate result types with the exact fields you requested (edited) so you can access text, but not active for example so in contrast to global model types, query-specific types give you complete type safety for your data fetching

Эта статья вам тоже поможет Сопоставление типов GraphQL с Swift

Sergej Birklin 13.08.2018 15:38

как ответил @Sergej Birklin, я хотел бы поделиться с вами еще одним вопросом -

Profile.graphql

query MyProfile{
    player {
        me {
            id
            secret
            name
            email
            state
            country
            timezone
            picture
            pictureType
            audio
            rank
        }
    }
}

Поскольку мы просто запрашиваем информацию о моем профиле (где я указан как тип игрок), запрос вернет информацию, которая мне нужна, например, мой идентификатор, имя, адрес электронной почты, состояние и т. д.

as you state that it will create MyProfileQuery

Надеюсь, это поможет вам ??

#swith #GraphQL #iOS

Другие вопросы по теме