溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C# AJAX技術如何結合GraphQL進行數(shù)據(jù)查詢

發(fā)布時間:2024-09-09 17:31:52 來源:億速云 閱讀:80 作者:小樊 欄目:編程語言

在C#中,你可以使用AJAX技術結合GraphQL進行數(shù)據(jù)查詢。這里是一個簡單的示例,展示了如何在ASP.NET Core應用程序中實現(xiàn)這種結合。

  1. 首先,確保你已經安裝了以下NuGet包:

    • Microsoft.AspNetCore.Mvc.NewtonsoftJson
    • GraphQL
    • GraphQL.Server.Ui.Playground
  2. 創(chuàng)建一個GraphQL schema(模式)和對象類型。例如,我們創(chuàng)建一個簡單的Person類型:

public class PersonType : ObjectGraphType<Person>
{
    public PersonType()
    {
        Field(x => x.Id);
        Field(x => x.Name);
        Field(x => x.Age);
    }
}

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}
  1. 創(chuàng)建一個GraphQL查詢類型,繼承自ObjectGraphType,并添加一個字段來獲取所有人員信息:
public class PersonQuery : ObjectGraphType
{
    public PersonQuery()
    {
        Field<ListGraphType<PersonType>>("people", resolve: context =>
        {
            // 在這里返回你的數(shù)據(jù)源,例如從數(shù)據(jù)庫獲取數(shù)據(jù)
            var people = new List<Person>
            {
                new Person { Id = 1, Name = "Alice", Age = 30 },
                new Person { Id = 2, Name = "Bob", Age = 25 },
            };
            return people;
        });
    }
}
  1. Startup.cs中配置GraphQL端點:
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers().AddNewtonsoftJson();
    services.AddSingleton<ISchema, PersonSchema>();
    services.AddGraphQL(options =>
    {
        options.EnableMetrics = true;
        options.ExposeExceptions = true;
    });
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseRouting();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller}/{action=Index}/{id?}");
        endpoints.MapGraphQL();
    });

    app.UseGraphQLPlayground(new GraphQLPlaygroundOptions());
}
  1. 創(chuàng)建一個HTML頁面,其中包含一個AJAX請求,用于查詢GraphQL數(shù)據(jù):
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>GraphQL AJAX Example</title>
   <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <h1>GraphQL AJAX Example</h1>
   <button id="loadData">Load Data</button>
    <ul id="peopleList"></ul>

   <script>
        $("#loadData").click(function () {
            $.ajax({
                url: "/graphql",
                method: "POST",
                contentType: "application/json",
                data: JSON.stringify({
                    query: `
                        {
                            people {
                                id
                                name
                                age
                            }
                        }
                    `
                }),
                success: function (response) {
                    var people = response.data.people;
                    var list = $("#peopleList");
                    list.empty();
                    for (var i = 0; i< people.length; i++) {
                        list.append("<li>" + people[i].name + " (" + people[i].age + ")</li>");
                    }
                },
                error: function (error) {
                    console.log("Error: ", error);
                }
            });
        });
    </script>
</body>
</html>

現(xiàn)在,當你點擊"Load Data"按鈕時,AJAX請求將發(fā)送GraphQL查詢,并在頁面上顯示查詢到的人員信息。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI