如何与在远程服务器上运行的JIRA安装的REST API进行通信?
我想通过this little example了解如何与JIRA的REST API进行交互。
这是我想发出的请求:
curl -u admin:admin -X POST --data @data.txt -H "Content-Type: application/json" http://localhost:2990/jira/rest/api/2/issue/
我的JIRA应用程序在AWS计算机上运行,例如,以下URL:
http://aws-url:8080
这是我用来发送POST请求的R调用:
httr::POST("http://aws-url:8080/jira/rest/api/2/issue/",
"-u" = "myuser:mypassword",
"--data" = "@data.json",
"-H" = "Content-Type: application/json")
但是,我收到了以下404
回复:
Response [http://aws-url:8080/jira/rest/api/2/issue/]
Date: 2016-07-15 14:28
Status: 404
Content-Type: text/html;charset=UTF-8
Size: 2.76 kB
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-C...
<ul class="atlassian-footer">
<li>
Atlassian JIRA <a class="seo-link" rel="nofollow" href="https://www.atlassi...
<span id="footer-build-information">(v7.1.9#71013-<span title='1aa0586d78ef...
...
所以我猜我错误地指定了URL(或者仍然误解了我的JIRA实例的REST API是如何被联系的)和/或错误地指定了对POST
的调用?
抱歉,还不熟悉整个网络技术堆栈。该问题与this one
有关尝试了这个请求,但得到了相同的结果:
httr::POST(url,
body = "-u myuser:mypassword --data @data.json",
encode = "json"
)
答案 0 :(得分:1)
404表示“未找到”,因此您使用的网址存在问题。
如果您在浏览器中粘贴这样的内容,会得到什么?
$(document).ajaxComplete(function(){
FormSliderSwitcher.init();
});
此外,如果您通过浏览器访问JIRA,是使用http://aws-url:8080/jira还是除了/ jira之外还有其他内容?
答案 1 :(得分:1)
似乎实际的网址需要像这样:
http://aws-url:8080/rest/api/2/issue/
或
http://aws-url:8080/rest/api/latest/issue/
而不是
http://aws-url:8080/jira/rest/api/latest/issue/
假设您的JIRA实例在端口8080
上运行
我不太清楚为什么可以从网址中删除context
(我的情况为jira
),因为resource建议URL结构必须如下所示:
http://host:port/context/rest/api-name/api-version/resource-name
我作为web-dev n00b的唯一解释是,我已经明确地通过它的端口号以某种方式明确地对待JIRA实例?然而,我可能会混淆context
和api-name
的含义(对那些东西还没那么深;-))。如果省略,api-name
是否会获得默认值?
GET
请求此GET请求
res <- GET(http://aws-url:8080/rest/api/latest/issue/{anExistingIssueKey},
authenticate("user", "password"))
给了我一个200
回复,其中包含已存在的问题的所有问题详情。
POST
请求实际的POST
请求需要如下所示:
url <- "http://aws-url:8080/rest/api/latest/issue/"
res <- POST(url,
authenticate("user", "password"),
body = upload_file("data.txt"),
encode = "json"
)
并为您提供201
回复