Рубрики
Без рубрики

Графический SQL никаких кварков

Все, что находится на этом проекте можно найти в репозитории GitHub. Пара а носса поко ке физемос… Помеченный java, кварками, graphql.

Tudo que esta ese projeto pode ser encontrado без репозитория GitHub .

Для нашего доу, что мы делали, было сначала поймать.

Введение в проект

Esse projeto já foi контекстуализадо нет dev.to . В основном то, что он делает поймать использовать get api находится в https://randomuser.me/api и применяется GraphQL в ответ.

GRAPHQL На Кварках

Службы

Для использования GraphQL в данном проекте мы используем зависимость Vert.x , полный комплект документации, вы можете найти здесь для импорта, просто добавьте в свой pom.xml

    
      io.vertx
      vertx-web-graphql
    

Давайте для кода

Перед тем, как использовать GraphQL мы должны моделировать некоторые DTO’s для нашей моделирования:

public class Names {

    private String title;
    private String first;
    private String last;

//    Getters and Setters

}

Для этой модели нужно будет учитываться Fetcher, который должен стоять следующим образом:

public class UserFetcher implements DataFetcher> {

    private final UserClient userClient;

    public UserFetcher(UserClient userClient) {
        this.userClient = userClient;
    }


    private Results getResult() {
        return userClient.getUsers();
    }

    @Override
    public List get(DataFetchingEnvironment environment) throws Exception {
        return getResult().getResults();
    }
}

Producer

Чтобы получить результаты, мы должны будем также класса, producer, как показано ниже, это немного boilerplate, я пытаюсь сделать расширение quarkus, чтобы уменьшить этот и другие части, которые являются повторяющимися, в то время как этого не происходит, класс выглядит следующим образом:

 public class GraphQLProducer {

     private Logger LOGGER = LoggerFactory.getLogger(GraphQLProducer.class);

     @RestClient
     @Inject
     private UserClient userClient;

     @Produces
     public GraphQL setup() {

         LOGGER.info("Setting up GraphQL..");

         SchemaParser schemaParser = new SchemaParser();
         TypeDefinitionRegistry registry = schemaParser.parse(
             new InputStreamReader(
                 Objects.requireNonNull(Thread.currentThread().getContextClassLoader()
                     .getResourceAsStream("META-INF/resources/graphql.schema"))));

         SchemaGenerator schemaGenerator = new SchemaGenerator();
         GraphQLSchema graphQLSchema = schemaGenerator.makeExecutableSchema(registry, wirings());
         return GraphQL.newGraphQL(graphQLSchema).build();
     }

     private RuntimeWiring wirings() {

         LOGGER.info("Wiring queries..");

         return RuntimeWiring.newRuntimeWiring()
             .type("Query",
                 builder -> builder.dataFetcher("allUsers", new UserFetcher(userClient)))
             .build();
     }


 }

Na parte de getResourceAsStream() você colocao схема де graphml que você desejar, без носсо коко фику о МЕТА-ИНФОРМАЦИЯ/ресурсы/graphql.схема

type Names {
  first: String
  last: String
}


type User {
  email: String
  name: Names
  gender: String
  phone: String
  cell: String
  nat: String
}

type Query {
  allUsers : [User]
}

Кроме того, в части wirings() ставим, кто будет Fetcher, который будет использоваться для allUsers , который был объявлен в рамках graphql.schema

Отделочные мы должны объявить часть Маршрутов (другая часть, которая является немного boilerplate, который также может войти в расширение).

@ApplicationScoped
public class Routes {

    @Inject
    GraphQL graphQL;

    public void init(@Observes Router router) {

        boolean enableGraphiQL = true;

        router.route("/graphql")
            .handler(new GraphQLHandlerImpl(graphQL, new GraphQLHandlerOptions()));
        router.route("/graphiql/*").handler(
            GraphiQLHandler.create(new GraphiQLHandlerOptions().setEnabled(enableGraphiQL)));
    }

}

Были объявлены два маршрута:

  1. /graphql → где хранятся все “концы” для доступа пользователей
  2. /graphiql/* →, где находится документация на который был зарегистрирован.

## Заключение Резюмируя все, что мы сделали, не очень сложно, после первого раза, но не хватает много документации, и несколько раз видел места, показывающие, как если бы это было через волшебную, как сделать отеле и уже работает. После многих испытаний хорошо работает, но как я уже сказал, есть много частей, которые могут быть удалены с расширением более полный.

Другое дело, что стало очень темно, и сложно являются заголовки, как authorização не очень просто манипулировать и сделать некоторые проверки с ними.

С ней вообще не думаю хороший вариант, сравнивая с тем, что уже есть в Spring Boot, в этом случае еще не созрела достаточно, но, конечно, не очень далеко, и, легко видеть, как приходят в этот момент.

## Хотите идти в ногу немного больше? Следуй за мной на платформах._

GitHub: луис лейте-hotmart

Твиттер: луис лейте_

Подергивание: код coffee_and_code

Linkedin: луис лейте оливейра

dev.to: луис лейте_

Оригинал: “https://dev.to/luizleite_/graphql-no-quarkus-1jk7”