Как выполнить HTTP-запрос с помощью clj-http, включая ключ API?

Я пытаюсь сделать http-запрос к API, который меняет данное предложение на то, как yoda может сказать это. Вот мой код, который в настоящее время получает сообщение об ошибке "Отсутствует ключ приложения Mashape":

(ns clojure-noob.core
  (:gen-class)
  (:require [clj-http.client :as client]))

(defn api-request [method path body]
  (:body
    (client/request
      {:basic-auth "*MY-AUTH-KEY-HERE*"
       :method method
       :url (str "https://yoda.p.mashape.com" path)
       :content-type "text/plain"
       :body body})))

(api-request :get "/yoda?sentence=You+will+learn+how+to+speak+like+me+someday.++Oh+wait." "")

:basic-auth раздел является наиболее сомнительной частью этого кода. Описание API находится здесь: https://market.mashape.com/ismaelc/yoda-speak Вот так выглядит рабочий запрос curl для этого API:

curl --get --include 'https://yoda.p.mashape.com/yoda?sentence=You+will+learn+how+to+speak+like+me+someday.++Oh+wait.' \
  -H 'X-Mashape-Key: *MY-AUTH-KEY-HERE*' \
  -H 'Accept: text/plain'

Любая помощь, скорее всего, сэкономит мне бесчисленное количество часов в поисках подсказок о том, как это делается.

1 ответ

Решение

Похоже, ключ должен идти в конкретном заголовке с именем X-Mashape-Key вместо использования базовой аутентификации HTTP.

(client/request
  {:headers {"X-Mashape-Key" "*MY-AUTH-KEY-HERE*"}
   :method method
   :url (str "https://yoda.p.mashape.com" path)
   :content-type "text/plain"
   :body body})))
Другие вопросы по тегам