Нужна помощь в создании рабочего элемента в TFS 2015 с использованием JavaScript - PullRequest
0 голосов
/ 05 ноября 2019

Когда я пытаюсь передать свой объект json для создания элемента задачи, а также передать приложение типа контента / json-patch + json и тип PATCH, я получаю сообщение об ошибке: в запросе указано «Content-Type»\ "\" для типа метода \ "PATCH \", который не поддерживается. Допустимыми типами содержимого для этого метода являются application / json = patch + json. ".

Он отлично работает, когда я вызываю его в Postman. с тем же типом приложения и типа патча. Я пытаюсь создать веб-страницу и заставить ее позвонить в службу, когда я нажимаю кнопку в форме.

var newJson = '[{"op":"add","path":"/fields/System.Title","value":"JavaScript implementation for Microsoft Account"}]';
var oJson = JSON.stringify(newJson);

//AZURE URL
var url = "https://dev.azure.com/AIZ-GL-dryrun/375977db-f390-4aac-bc4d-808f51360f9a//_apis/wit/workitems/$task?api-version=5.1";

jQuery.support.cors = true;
$.ajax({
url: url,
async: true,
data: oJson,
type:'PATCH',
contentType: "application/json-patch+json;",
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Basic "+btoa(username+':'+password));
},
success: function(data){
    var myObject = JSON.stringify(data);
    alert("RESULT: "+myObject);
},
error: function(err) {
    alert(JSON.stringify(err))}
});

1 Ответ

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

Как указал Даниэль , var url = "https://dev.azure.com/AIZ-GL-dryrun/375977db-f390-4aac-bc4d-808f51360f9a//_apis/wit/workitems/$task?api-version=5.1"

enter image description here

Вы пытались использовать API с версией 5.1. Как видите, эта версия не поддерживается Team Foundation Server 2015.

Необходимо использовать версию 2.x на TFS 2015 и повторить попытку. Подробнее о версии API, пожалуйста, посмотрите на эту официальную ссылку - REST API Versioning


Обновление , используйте post вместо patch и попробуйте снова.

return $.ajax({
        url: "https://{account}.visualstudio.com/DefaultCollection/{project}/_apis/wit/workitems/$Bug?api-version=1.0",
        type: "POST",
        headers: {
            "Authorization": "Basic " + btoa("{user}:{password}"),
            "X-HTTP-Method-Override": "PATCH",
            "Content-Type": "application/json-patch+json; charset=utf-8"
        },
        dataType: 'json',
        cache: false,
        data: JSON.stringify(myData),
        async: false,
        error: function (jqXHR, textStatus, errorThrown) {
                //alert(jqXHR.status + ': ' + errorThrown);
            },
        success: function (data) {
           // alert(JSON.stringify(data));
            }
        });

Другим способом, вы могли бы также вместо этого использовать пакетный API рабочего элемента:

Например:

http://[collection url]/_apis/wit/$batch?api-version=1.0

Тело:

[
  {
    "method": "PATCH",
    "uri": "/ScrumStarain/_apis/wit/workItems/$Product Backlog Item?api-version=1.0",
    "headers": {
      "Content-Type": "application/json-patch+json"
    },
    "body": [
      {
        "op": "add",
        "path": "/fields/System.Title",
        "value": "apip1"
      },
      {
        "op": "add",
        "path": "/id",
        "value": "-1"
      }
    ]
  },
  {
    "method": "PATCH",
    "uri": "/ScrumStarain/_apis/wit/workItems/$Task?api-version=1.0",
    "headers": {
      "Content-Type": "application/json-patch+json"
    },
    "body": [
      {
        "op": "add",
        "path": "/fields/System.Title",
        "value": "apip2"
      },
      {
        "op": "add",
        "path": "/id",
        "value": "-2"
      }

    ]
  }
]

Более подробную информацию можно найти: Пакетные операции с рабочим элементом

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