Как сделать запрос к существующей базе данных онлайн с помощью. net Graphql NuGet? (c#) - PullRequest
1 голос
/ 21 февраля 2020

Моя цель: Создать приложение формы Windows, которое запрашивает через GraphQl существующую онлайн-базу данных.

Что я сделал:

  • Чтобы смоделировать сервер graphQl, я до конца следовал официальному Graphql-node Tutorial . Так что теперь я могу сделать запрос с игровой площадки GraphQl и получить ответ. Этот сервер работает на локальном хосте: 4000.
  • Я создал приложение формы windows в Visual Studio, которое запрашивает в graphQl внутреннюю базу данных, содержащую поддельные данные. Например,

Мой Form.cs класс содержит этот код, где я выполняю запрос onButtonClick

    private void button1_Click(object sender, EventArgs e)
    {
        var schema = Schema.For(@"
            type Jedi {
                name: String,
                side: String,
                id: ID
            }
            type Query {
                hello: String,
                jedis: [Jedi],
                jedi(id: ID): Jedi
            }", _ => { _.Types.Include<Query>(); }
        );

        var json = schema.Execute(_ =>
        {
            _.Query = "{jedis { name, side } }";
        });

        System.Diagnostics.Debug.WriteLine(json);

        label1.Text = json;
    }

После выполнения запроса мой Запрос .cs класс распознает его и разрешит запрос

class Query
{
    [GraphQLMetadata("jedis")]
    public IEnumerable<Jedi> GetJedis()
    {
        return StarWarsDB.GetJedis();
    }
}

Это моя текущая внутренняя БД

class StarWarsDB
{
    public static IEnumerable<Jedi> GetJedis()
    {
        return new List<Jedi>() {
    new Jedi(){ Id = 1, Name ="Luke", Side="Light"},
    new Jedi(){ Id = 2, Name ="Yoda", Side="Light"},
    new Jedi(){ Id = 3, Name ="Darth Vader", Side="Dark"}
};
    }
}

Следующий шаг, который я хочу сделать:

Теперь я нашел много примеров в Интернете о том, как сделать запрос к БД, но они всегда делались внутри Visual Studio. Я хотел подключиться к моей личной БД, работающей на моем локальном хосте (тот, который я сделал после graphql-node Tutorial ) и запросить ее с помощью graphQl. Затем возьмите ответ JSON и напечатайте его где-нибудь.

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Вы немного смешиваете это. Для начала вам не нужно иметь объявление схемы на вашем клиенте. Если я вас правильно понял, вы используете веб-формы и хотите получить доступ к API-интерфейсу на бэкэнде, который будет возвращать вам данные.

Так что в этом случае вам понадобится graphql «Клиент» в вашем проекте веб-форм, с помощью которого вы «подключаетесь» к конечной точке, например, к вашему prisma api, и после этого отправляете запросы или мутации к api только в качестве запроса.

Вот ссылка для клиента, вы устанавливаете ее как nuget и выполняете документация.

https://github.com/graphql-dotnet/graphql-client

Итак, в самых простых объяснениях, объясненных, graphqlClient отправляет запрос в конечную точку => (в данном случае ваш prisma api), которая получает данные => из вашей базы данных.

Клиент (запрос) => Api (выбрать * источник данных) => БД (SQL) => Api (возвращает данные) => Клиент (десериализация) => привязать к пользовательскому интерфейсу => посмотреть вывод.

0 голосов
/ 21 февраля 2020

GraphQL - это язык запросов для вашего API и среда выполнения на стороне сервера для выполнения запросов с использованием системы типов, которую вы определяете для своих данных. GraphQL не привязан к какой-либо конкретной c базе данных или хранилищу, а вместо этого поддерживается существующим кодом и данными. - graphql.org

Привет, Зайед

Возможно, я неправильно понял ваше объяснение, но вы не можете напрямую запрашивать базу данных с помощью GraphQL. Вам понадобится проект API между вашим соединением и GraphQL logi c. Вы отправите свою схему GraphQL на конечную точку API, и она вернет, в зависимости от вашей конечной точки, правильную структуру данных.

Я нашел хороший сайт , где шаг за шагом будет объяснено, как его реализовать в ASP. NET CORE 2.

Надеюсь, это поможет . Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...