Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Clojure中的http工具包将api密钥作为授权发送?_Clojure_Authorization_Api Key_Http Kit - Fatal编程技术网

如何使用Clojure中的http工具包将api密钥作为授权发送?

如何使用Clojure中的http工具包将api密钥作为授权发送?,clojure,authorization,api-key,http-kit,Clojure,Authorization,Api Key,Http Kit,我需要在Clojure中使用HTTPKit进行API调用,它使用API密钥作为授权。也就是说,在Postman中,您通常可以选择添加api键,api值,并可以选择将其添加到标题或查询参数 我知道在basic auth的情况下,应该采取以下措施: {:url "<api-url>" :method :post :headers {"Content-Type" "application/json"} :basic-auth

我需要在Clojure中使用
HTTPKit
进行API调用,它使用API密钥作为授权。也就是说,在Postman中,您通常可以选择添加
api键
api值
,并可以选择将其添加到
标题
查询参数

我知道在
basic auth
的情况下,应该采取以下措施:

{:url "<api-url>"
 :method :post
 :headers {"Content-Type" "application/json"}
 :basic-auth [<username> <password>]
 :body <body>)}
{:查询参数{}
{:query参数{:key,:value}
{:headers{“内容类型”“应用程序/json”
}
{:api键[]}
{:api键{}
和其他变化,但它似乎不起作用


(注意:授权可以在postman上运行,但我无法在那里测试完整的api调用,因为正文太长太复杂,无法复制,并且授权无法从应用程序中运行。)

如果您在Postman中使用API密钥auth向不存在的端点提交POST请求,请求将失败,但您仍然可以使用控制台检查请求中尝试的标头。我使用了占位符值,请求标头如下所示:

MYAPIKEY: MYAPIVALUE
Content-Type: application/json
User-Agent: PostmanRuntime/7.26.10
Accept: */*
Postman-Token: 0494818d-5401-4baa-8ef7-bfce46c7196e
Host: localhost:5001
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

这使我认为http工具包中的请求至少需要几个标题(通常至少需要
Content-type
Accept
和自定义API键/值对)。

我将标题更改为包含
Accept
值如下,但这也不起作用。
:标题{“接受”“*/*”、“内容类型”“应用程序/json”、}
”但它似乎不起作用"-您收到了什么错误?响应是什么?因为您对api密钥进行了疯狂猜测,并假设这是实际问题:请同时添加遥控器文档中关于如何提交的说明。@cfrick api文档中说授权是通过api密钥和键值对完成的。我得到了
401
其中一些组合的状态,以及导致其他组合出现空指针异常的类型错误。但另一方在哪里查找?您已经尝试了标头和查询参数。您尝试联系的端点是否公开记录,可以链接它吗?@cfrick当然,这是指向文档的链接:演示没有尽管请求中包含了api密钥,但它也没有明确提到它需要它的位置。(内容是西班牙语的,但Google Translate可以正常工作)。是的,文档似乎很无用。我猜应该是
{:headers{“CONSULTAR”}
{:query-params {<api-key> <api-value>}}
{:query-params {:key <api-key>, :value <api-value>}}
{:headers {"Content-Type" "application/json"
           <api-key> <api-value>}
{:api-key [<api-key> <api-value>]}
{:api-key {<api-key> <api-value>}
MYAPIKEY: MYAPIVALUE
Content-Type: application/json
User-Agent: PostmanRuntime/7.26.10
Accept: */*
Postman-Token: 0494818d-5401-4baa-8ef7-bfce46c7196e
Host: localhost:5001
Accept-Encoding: gzip, deflate, br
Connection: keep-alive