【问题标题】:Using HTTR POST to Create a Azure Devops Work Item使用 HTTR POST 创建 Azure Devops 工作项
【发布时间】:2019-12-27 06:22:44
【问题描述】:

我正在尝试设置一些 R 代码以在 Azure Devops 中创建新的工作项任务。如果可以的话,我可以从一个大部分为空的工作项开始(我的示例代码只是试图创建一个带有标题的工作项)。

我收到 203 响应,但工作项未出现在 Devops 中。

我一直在关注 Microsoft 的这份文档,我怀疑我的正文格式可能不正确。

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

我尝试更新不同的字段并以不同的方式格式化正文,但没有成功。我尝试创建错误或功能工作项,但都返回相同的 203 响应。

为了验证我的令牌是否有效,我可以通过 ID 获取工作项数据,但 POST 继续返回 203。


require(httr)
require(jsonlite)

url <- 'https://dev.azure.com/{organization}/{project}/_apis/wit/workitems/$bug?api-version=5.1'

headers = c(
    'Authorization' = sprintf('basic %s',token),
    'Content-Type' = 'application/json-patch+json',
    'Host' = 'dev.azure.com'
  )

data <- toJSON(list('body'= list("op"= "add",
                                   "path"= "/fields/System.AreaPath",
                                   "value"= "Sample task")), auto_unbox = TRUE, pretty = TRUE)

res <- httr::POST(url,
                  httr::add_headers(.headers=headers),
                  httr::verbose(),
                  body = data)

当我导航到该网站时,我期待 200 响应(类似于上面链接中的示例)和 Azure DevOps Services 中的工作项任务。

我对 R 不是最好的,所以请详细说明。提前谢谢你!

【问题讨论】:

    标签: r azure rest azure-devops


    【解决方案1】:

    POST 继续返回 203。

    HTTP响应码203表示Non-Authoritative Information,应该是你的token格式转换错误造成的。

    如果您希望通过 HTTP 提供个人访问令牌 标头,必须先将其转换为 Base64 字符串。

    参考这个doc的描述,如果你想使用VSTS rest api,你必须将你的token转换为Base64字符串。但是在你的脚本中,你没有这个脚本来实现这个转换。

    所以,请尝试使用以下脚本转换令牌以使密钥符合要求(首先加载base64enc包):

    require(base64enc)
    key <- token
    keys <- charToRaw(paste0(key,":token"))
    auth <- paste0("Basic ",base64encode(keys))
    

    希望这可以帮助您获得 200 响应代码

    【讨论】:

    • 感谢您的回复,我会在今天晚些时候试一试并提供反馈!感谢您的帮助。
    • 感谢您的回复和建议,但通过对令牌进行编码以使用 base64encode 函数,我现在得到了 400 响应代码。我有点不清楚 VSTS REST API 是什么,但我认为这就是我正在使用的,所以我会对此做更多的研究。如果您有任何其他建议,请告诉我。 (我已将回复粘贴在下面)再次感谢!日期:2019-08-26 15:18 状态:400 内容类型:application/json; charset=utf-8 大小:459 B
    • 响应码 400 表示错误请求。这意味着令牌是正确的,但您的请求正文有错误。我会在我这边检查后更新我的答案。另外,你是在哪里运行这些 R 脚本的?
    猜你喜欢
    • 2020-07-26
    • 2021-06-14
    • 2020-06-11
    • 2020-06-28
    • 2021-03-19
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    相关资源
    最近更新 更多