如何使用JQuery从REST API仅返回JSON对象的一部分

How to return only part of JSON object from REST API with JQuery

本文关键字:JSON 返回 对象 一部分 API 何使用 JQuery REST      更新时间:2023-09-26

因此,我一直在尝试找到一种方法,使用JQuery从REST API调用仅返回特定的键-值对。我要离开的第一个电话是:

jQuery.ajax({
    type: "GET",
    url: "https://BASEURL/api/project-type/list-all",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    beforeSend: function ()
    {
        $('#projectTypeListLoading').text("Loading...");
    },
    success: function (data, status, jqXHR)
    {
        var trHTML = "";
        $.each(data, function (i, item)
        {
            trHTML += '<tr><td>' + item.Name + '</td><td>' + item.Code + '</td><td>'
                + item.Order + '</td><td>' + item.IsActive + '</td><td>' + item.Id + '</td></tr>';
        });
        $('#projectTypesTable').append(trHTML);
        $('#projectTypeListLoading').html("DONE");
    },
    error: function (jqXHR, status)
    {
        $('#projectTypeListLoading').html("Error loading list");
    }
});

通过这个,我可以从我的REST API中获得JSON对象的列表,如下所示:

[{"Name":"Project Type 2","Code":"2","Order":2,"IsActive":true,"Id":"c497e4e8-16b4-44e2-b6ac-a9a2c392d9d4"},{"Name":"Project Type 3","Code":"3","Order":3,"IsActive":true,"Id":"6da2a240-2327-4260-a6df-f4bec25535c2"}]

然后,我在Ajax的成功部分中使用这些,并将它们粘贴在表中。工作非常完美。然而,我希望发生的事情是,只将JSON对象的Name键-值对部分作为来自我的REST API的响应。像这样:

[{"Name":"Project Type 2"},{"Name":"Project Type 3"]

然后在我的成功函数中使用:

success: function (data, status, jqXHR)
    {
        var trHTML = "";
        $.each(data, function (i, item)
        {
            trHTML += '<tr><td>' + item.Name + '</td></tr>';
        });
        $('#projectTypesTable').append(trHTML);
        $('#projectTypeListLoading').html("DONE");
    },

我可以通过两种不同的方式来实现这个结果。我可以:

  • 将我的REST API调用更改为"https://BASEURL/api/project-type/name"。并且调用它并让API只返回名称。我不想这样做,因为我有20个不同的URL,它们已经返回了全部,我不会为每个URL单独创建一个URL来访问每个键值。

  • 就像我最初的例子一样,然后忽略所有不是"Name"的键值对。这将是我想要的,但关键是会有数百个这样的调用在进行。每个调用都会返回完整的JSON对象,然后我会减少它;那是很多不必要的闲聊。我希望能够指定要减少服务器负载的键值对。

关于如何实现这一点,有什么建议吗?谢谢

REST端点没有简单的答案。这正是GraphQL、Falcor、OData和许多其他库所创建的问题。