我希望在 babashka 中復制來自 github api 的以下 curl 命令:
curl \
-X POST \
-H "Accept: application/json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
https://api.github.com/user/repos \
-d '{"name":"test"}'
目前,我已經嘗試過:
(ns bb-test
(require [environ.core :refer [env]]
[babashka.curl :as curl])
(def url "https://api.github.com/user/repos")
(def token (env :token))
(def headers {"Accept" "application/json" "Authorization" (str "Bearer " token)})
(def body "{'name:' 'test'}")
(curl/post url {:headers headers :body body})
我得到一個 400 http 狀態碼。任何幫助表示贊賞!
uj5u.com熱心網友回復:
在 bash 示例中,您正在發送一個正文,其中包含{"name":"test"}通過線路發送到服務器的文字資料。
在 babashka 示例中,您正在發送一個正文,其中包含{'name:' 'test'}通過線路發送到服務器的文字資料。
其中只有一件是有效的 JSON。
描述包含資料的文字字串的 Clojure 語法{"name":"test"}是"{\"name\":\"test\"}",因此最小的更改是修改您運行的行def body:
(def body "{\"name\":\"test\"}")
或者,您可以使用 JSON 庫(例如 Cheshire)將本機 Clojure 結構編碼為 JSON 字串:
(ns bb-test
(require [environ.core :refer [env]]
[cheshire.core :as json]
[babashka.curl :as curl])
(def url "https://api.github.com/user/repos")
(def token (env :token))
(def headers {"Accept" "application/json"
"Authorization" (str "Bearer " token)})
(def body {"name" "test"})
(curl/post url {:headers headers
:body (json/generate-string body)})
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/521095.html
上一篇:將URL卷曲到vb.net
