有没有办法在 KDB 中为 GET 请求设置 headers?

Is there a way to set headers for GET requests in KDB?

我正在尝试使用 .Q.hg (HTTP get) 发出 get 请求,但我需要编辑请求 headers 以提供 API 密钥。我该怎么做?

您可以尝试我几年前为 POC 编写的这个函数(类似的原因 - 我需要提供多个 headers)。它基于支撑 .Q.hp/hg.Q.hmb。请注意 - 它从未经过广泛测试并且可能有更好的替代方案,但它可能会作为一种快速解决方案。

k)req:{[url;method;hd;bd]d:s,s:"\r\n";url:$[10=@url;url;1_$url];p:{$[#y;y;x]}/getenv`$_:\("HTTP";"NO"),\:"_PROXY";u:.Q.hap@url;t:~(~#*p)||/(*":"\:u 2)like/:{(("."=*x)#"*"),x}'","\:p 1;a:$[t;p:.Q.hap@*p;u]1;(4+*r ss d)_r:(`$":",,/($[t;p;u]0 2))($method)," ",$[t;url;u 3]," HTTP/1.1",s,(s/:("Connection: close";"Host: ",u 2),((0<#a)#,$[t;"Proxy-";""],"Authorization: Basic ",.Q.btoa a),($[#hd;(!hd),'": ",/:. hd;()])),($[#bd;(s,"Content-length: ",$#bd),d,bd;d])}

需要 4 个参数:

  1. 资源URL
  2. HTTP 方法
  3. headers
  4. 的词典
  5. 消息 body 为 JSON object

正在向测试服务器发送请求..

q).j.k req["https://httpbin.org/get";`GET;("Content-Type";"someOtherHeader")!(.h.ty`json;"blah");""] // no body so pass empty string
args   | (`symbol$())!()
headers| `Content-Type`Host`Someotherheader`X-Amzn-Trace-Id!("application/jso..
url    | "https://httpbin.org/get"