Я рекомендую библиотеку clj-http для выполнения http-запросов. Вы можете найти множество примеров на связанной странице о том, как его использовать.
Ваше использование clj-http может выглядеть примерно так:
(ns my-app.core
(:require [clj-http.client :as client]))
...
(defn get-api-data []
(:body (client/get "https://third-party-api" {:as :json})))
Обратите внимание, что clj-http.client/get
возвращает карту, содержащую такие вещи, как код состояния ответа и заголовки.
Если вы используете опцию {:as :json}
для приведения ответа в json, обязательно включите cheshire в ваш project.clj (при условии, что вы используете leiningen)
:dependencies [...
[clj-http "3.9.0"]
[cheshire "5.8.0"]]
Документацию по запросам и ответам на звонок можно найти здесь .
Большая часть власти в кольце - это концепция промежуточного программного обеспечения. Большинство «приятных» функций, которые вы хотели бы видеть на http-сервере, можно найти в качестве промежуточного программного обеспечения в самом кольце или других библиотеках. Например, если вы хотите, чтобы все ваши ответы по умолчанию сериализировались как json, вы можете использовать ring-json
Если вы пытаетесь получить что-то, что «просто работает», быстро запустить и запустить несколько примеров, Luminus может быть полезным. Это курируемая коллекция библиотек, которые полезны для большинства веб-серверов. (Отказ от ответственности: я только минимально экспериментировал с Luminus, решив более четко понять мои зависимости).
Я лично использую compojure sweet в начале большинства моих проектов веб-сервисов, он включает в себя некоторые более приятные функции маршрутизации (включая параметры пути) и удобный пользовательский интерфейс для тестирования ваших конечных точек. К сожалению, он использует свою собственную форму деструктуризации и включает в себя немного больше магии и «просто необходимо знать», чем я хотел бы, но я еще не нашел что-то, что работает лучше для меня.