使用HTTR POST创建Azure Devops工作项

时间:2019-08-22 00:32:09

标签: r azure rest azure-devops

我试图设置一些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不是最好的,所以请详细说明。谢谢你!

1 个答案:

答案 0 :(得分:0)

  

POST继续返回203。

HTTP响应代码203的意思是Non-Authoritative Information,应由您的令牌格式转换错误引起。

  

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

请参阅此处介绍的doc,如果您想使用VSTS rest api,则必须将令牌转换为Base64字符串。但是在您的脚本中,您没有此脚本来实现此转换。

因此,请尝试使用以下脚本将令牌转换为符合要求的密钥(首先加载 base64enc软件包):

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

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