devops-rest APi - $ expand не работает для "Рабочих элементов - Получить пакет рабочих элементов" - PullRequest
1 голос
/ 04 ноября 2019

Я хочу получить доступ к некоторым данным из выбранных рабочих элементов. Ниже приведен мой рабочий код.

function postApiData(ApiUrl, responseBody, token) {
            var res = '';
            $.ajax({
                type: 'POST',
                async: false,
                url: ApiUrl,
                contentType: 'application/json',
                data: JSON.stringify(responseBody),
                cache: false,
                dataType: 'json',
                beforeSend: function (xhr) {
                    xhr.setRequestHeader("Authorization", "Basic " + btoa("" + ":" + _token));
                },
            }).done(function (data) {
                res = data;
            });
        return res;
    };

 var d = {
                    "ids": itemlist,
                    "fields": ["System.Id", "System.WorkItemType", "System.Title", "System.AssignedTo", "System.State", "System.Tags", "cust.PID", "cust.Product", "cust.ReleasedToProduction"]
                };
                var itemdata = postApiData('https://dev.azure.com/COMP/products/_apis/wit/workitemsbatch?$expand=relations&api-version=5.1', d, '');

Однако, $ expand здесь не работает, чтобы получить отношения. запрос дает результат и всегда игнорирует $ expand.

Я также пытался передать $ expand в теле запроса, но он также не работает. Может кто-нибудь, пожалуйста, руководство здесь?

1 Ответ

1 голос
/ 05 ноября 2019

Это потому, что параметр expand нельзя использовать с параметром fields, если значение expand равно relations.

Вы можете выполнить этот API с вашим телом запроса в Почтальон . Вы получите четкое сообщение о том, почему вы не можете его применить.

enter image description here


Для использования вашего API, если вы укажете fieldsв теле запроса expand больше не должен использоваться, и наоборот. Это как задумано, и оно было жестко закодировано в наших скриптах. Мы не допускаем другое значение $expand, если оно не является None или Links.

Для 5 значений $expand (None, Relations, Fields, Links, All) только None и Links могут работать с fieldsуспешно в API. Это универсальное правило, которое применяется ко всем API, включая one .


Также, пожалуйста, используйте $expand=Relations в теле запроса вместо URI, который показан как описанный документ. Здесь, если вы используете его в URI, он не будет использоваться серверным скриптом, так как метод, который вызвал этот API, не имеет этого параметра. Другой API, который может использовать $ expand в URI ( Как обычно, мы упомянем и покажем, может ли он использоваться в URI в документе ), соответствующие сценарии имеют параметры, которые могут обращаться к этим значениям, которые передаются по URI.

Итак, здесь, пожалуйста, используйте $expand=Relations в теле запроса, тогда вы получите результат со всеми полями и всеми его связями.

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