1

当我执行以下操作时,传递我的JIRA API 令牌......

curl --verbose --request GET \
     --url 'https://myJira.atlassian.net/....' \
     --user 'my_email@domain.com:my_jira_api_token' ...

...操作成功,我看到其中一个标题是:

Authorization: Basic encodedAuthInfoHere

我将如何对Drakma做同样的事情?:basic-authorization获取用户名和密码列表。但 JIRA 表示基本身份验证已被弃用。

(drakma:http-request url
                     :method :get
                     :basic-authorization '(email passwd)
                     ...

有没有办法执行 curl 使用的相同编码,并在调用时显式添加标头http-request?提前致谢!

4

2 回答 2

1

您可以传递:parameters给请求:

USER> (drakma:http-request "http://example.com"
                           :method :get
                           :parameters '(("user" . "token")))

回复是:

"<!doctype html>
<html>
<head>
    <title>Example Domain</title>

    <meta charset="utf-8" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" conten...[sly-elided string of length 1256]"
200 (8 bits, #xC8, #o310, #b11001000)
((:AGE . "507992") (:CACHE-CONTROL . "max-age=604800")
 (:CONTENT-TYPE . "text/html; charset=UTF-8")
 .....)
#<URI http://example.com/?user=token>
#<FLEXI-STREAMS:FLEXI-IO-STREAM {101D4A3723}>
T
"OK"

特别是,第 4 个返回值,即回复来自的 URI,是:

http://example.com/?user=token
于 2021-03-12T09:07:12.823 回答
1

与 curl 一样,Drakma 的密码可以是您想要的任何密码,因此您可以像使用 curl 一样插入 jira 令牌。

(setf drakma:*header-stream* *standard-output*)
(drakma:http-request "https://myJira.atlassian.net/...."
  :method :get
  :basic-authorization '("my_email@domain.com" "my_jira_api_token"))

点燃快乐?

我希望 drakma 创建一个字符串my_email@domain.com:my_jira_api_token,对其进行 base64 编码,并将其附加到“ Authorization: Basic”,所以你会得到一个像这样的标题:

Authorization: Basic bXlfZW1haWxAZG9tYWluLmNvbTpteV9qaXJhX2FwaV90b2tlbg==

如果您的 curl 示例已完成,Drakma 应该可以让您达到 curl 所做的那样。

于 2021-03-12T14:03:59.890 回答