Конвертировать curl в Clojure

curl2code преобразует команды curl в код Clojure с использованием clj-http. Конвертация выполняется в вашем браузере через WebAssembly для полной конфиденциальности. Для Elixir ознакомьтесь с нашим конвертером curl в Elixir. Для Java см. curl в Java. Ниже приведены практические примеры на Clojure.

Как скопировать curl из браузера

  1. 1

    Откройте DevTools

    Нажмите F12 или Ctrl+Shift+I, чтобы открыть инструменты разработчика в браузере.

  2. 2

    Перейдите на вкладку Network

    Нажмите на вкладку Network и выполните действие, которое инициирует HTTP-запрос.

  3. 3

    Скопируйте как cURL

    Нажмите правой кнопкой мыши на запрос → CopyCopy as cURL. Затем вставьте его выше.

Часто задаваемые вопросы

Что такое clj-http?

clj-http — самая популярная библиотека HTTP-клиента для Clojure, оборачивающая Apache HttpComponents. Она предоставляет идиоматичный API на основе данных с автоматическим парсингом JSON/EDN, управлением cookie и пулом соединений. Добавьте в project.clj: [clj-http "3.x"]. curl2code использует clj-http для всех преобразований в Clojure.

clj-http vs http-kit vs aleph — что выбрать?

clj-http синхронен, функционален и наиболее широко используется. http-kit легковесен, поддерживает асинхронность, отлично подходит для серверов, которые также делают HTTP-вызовы. aleph построен на Netty для высокопроизводительного асинхронного I/O. Для похожих функциональных языков см. наш конвертер curl в Elixir или curl в OCaml.

Как обрабатывать аутентификацию в Clojure?

Для Bearer-аутентификации добавьте заголовки: (client/get url {:headers {"Authorization" "Bearer token"}'}). Для Basic-аутентификации используйте встроенную опцию: {:basic-auth ["user" "pass"]}. clj-http также поддерживает OAuth и digest-аутентификацию. curl2code преобразует флаги -u и заголовки в идиоматичные карты Clojure.

Как отправить multipart form data в Clojure?

Используйте опцию :multipart: (client/post url {:multipart [{:name "file" :content (clojure.java.io/file "doc.pdf")} {:name "desc" :content "My file"}]}). clj-http автоматически обрабатывает генерацию границ и Content-Type. curl2code преобразует флаги -F в этот паттерн Clojure.

Как обрабатывать ошибки HTTP в Clojure?

По умолчанию clj-http выбрасывает ExceptionInfo при ответах, отличных от 2xx. Отключите это с помощью {:throw-exceptions false}, чтобы получить карту ответа. Проверяйте (:status response). Используйте try/catch с ex-data для извлечения ответа из исключений.

Как делать асинхронные HTTP-запросы в Clojure?

Используйте clj-http с {:async? true}, что возвращает future. Или используйте http-kit: (http/get url callback). Для параллельных запросов используйте pmap или каналы core.async. Clojure futures работают в пуле потоков JVM. Для похожей конкурентности см. curl в Java.

Как установить тайм-ауты в Clojure?

Передайте опции тайм-аута: (client/get url {:connection-timeout 10000 :socket-timeout 30000}). Значения указываются в миллисекундах. Для повторов используйте опцию :retry-handler или оберните в кастомную функцию повтора с экспоненциальной задержкой. Эти параметры соответствуют curl --connect-timeout и --max-time.

Как использовать прокси в Clojure?

Установите прокси в карте опций: (client/get url {:proxy-host "proxy" :proxy-port 8080}). Для прокси с аутентификацией добавьте :proxy-user и :proxy-pass. clj-http также поддерживает SOCKS-прокси. curl2code преобразует флаги -x и --proxy в правильные опции прокси Clojure.

Как отправить POST-запрос с телом JSON на Clojure?

Преобразуйте команду curl POST, такую как curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL, в Clojure с помощью curl2code. Сгенерированный код использует (client/post url {:content-type :json :body (json/generate-string data)}). curl2code автоматически обнаруживает флаги -d/--data с содержимым JSON и устанавливает соответствующий заголовок Content-Type в коде clj-http.

Как добавить авторизацию через Bearer token на Clojure?

Передайте curl -H "Authorization: Bearer YOUR_TOKEN" URL в curl2code, и инструмент сгенерирует код clj-http с заголовком авторизации: :headers {'Authorization' 'Bearer YOUR_TOKEN'}. curl2code распознает Bearer tokens как в флагах -H "Authorization: Bearer ...", так и в --oauth2-bearer. Для Basic auth используйте -u user:pass.

Как установить заголовок Content-Type на Clojure?

curl2code преобразует curl -H "Content-Type: application/json" URL в код clj-http с правильным заголовком: :content-type :json. Для данных -d curl по умолчанию использует application/x-www-form-urlencoded; для загрузки форм -F используется multipart/form-data. curl2code сопоставляет каждый вариант с подходящим API clj-http.

Полезные ссылки

Руководства по curl

Конвертировать curl в другие языки