首页 > 解决方案 > devops REST API:无法使用 PATCH 方法更新工作项状态

问题描述

我正在使用 DevOps restapi 来获取一些信息。POST 方法对我来说很好用。
我想更新我的工作项的状态。为此,我需要使用 PATCH 方法。这是行不通的,也没有给出任何错误。

https://docs.microsoft.com/en-us/rest/api/azure/devops/wit/work%20items/update?view=azure-devops-rest-5.1

function postApiData(ApiUrl, responseBody) {
    var res = '';
    try {

        $.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;
        }).fail(function (e) {

        });
    } catch (error) {
        var x = error;
        throw x;
    }
    return res;
};

对于补丁方法,我正在修改一些东西。但不更新我的工作项并没有给出任何错误。我还检查了我的令牌访问权限。我有完全访问权限。

type: 'PATCH',
contentType: 'application/json-patch+json',

标签: javascriptajaxazure-devopsazure-devops-rest-apihttp-patch

解决方案


我用PATCHAjax 写了一个简单的示例:

<script type="text/javascript">
$(document).ready(function () {
    $("#SelectWIT").on("click", function () {
        var json= [{
                "op": "add",
                "path": "/fields/System.State",
                "value": "Closed"
              }];
        $.ajax({
            type: 'PATCH',
            url: 'https://dev.azure.com/{org name}/_apis/wit/workitems/{WIT id}?api-version=5.1',
            contentType: 'application/json-patch+json',
            data: JSON.stringify(json),
            cache: false,
            dataType: 'application/json-patch+json',
            beforeSend: function (xhr) {
                xhr.setRequestHeader("Authorization", "Basic " + btoa("" + ":" + "{PAT token}"));
            },
        }).error(function (e) {
            var s = "error error error";
        });
    })
});
</script>

注意:不仅contentType需要设置为application/json-patch+json,在 中也一样dataType


我使用 Fiddler 来捕捉这个操作:

在此处输入图像描述

您可以看到工作项状态更新成功。

更新:

在此处输入图像描述


推荐阅读