Как я могу переслать часть запросов на другой сервер в Clojure? - PullRequest
1 голос
/ 21 апреля 2020

Сводка

Я разрабатываю сервер, который будет похож на прокси в Clojure, со службой пьедестала + lein в качестве основы:

  • Получение запросов
  • Пересылка запросов на внешние серверы
  • Выполнение нескольких запросов от сервера к серверу для подачи большего json и возврата в виде одного запроса к клиент

Легко кодировать, и есть много ресурсов о том, как обслуживать маршрут, однако я не мог найти простой способ, как устроить постамент Clojure сервис вместе с переадресацией маршрутов

Пример

  • Клиентские вызовы [GET] / биллинг => proxy-clojure-server
  • proxy-clojure -server проверка подлинности запроса с учетными данными клиента => auth-сервер
  • proxy-clojure-server заполняет json данными для выставления счетов => биллинг-сервер
  • прокси-clojure-сервер заполняет json данными клиента => клиент-сервер
  • proxy-clojure-server возвращает 200 с полным JSON решено

Настройка

  • У меня есть проект с такой же структурой, как и: lein new pedestal-service my-app

То, что я пытался

Пример:

(ns your-ns
  (:require [tailrecursion.ring-proxy :refer [wrap-proxy]]))

(def app
  (-> routes
      (wrap-proxy "/remote" "http://some.remote.server/remote")))

Я просто не могу смешать систему маршрутизации с пьедестала с этим прокси-решением, маршруты разные, кажется, может мне понадобится o это с другим подходом

Отказ от ответственности

  1. Я знаю, что пересылка * basi c может быть сделана с помощью nginx, varni sh, любым другим балансировщиком нагрузки. Но моя идея здесь состоит в том, чтобы заполнить данные с разных серверов, упрощая для клиента
  2. Я новичок ie с Clojure , как вы могли заметить. И у меня закончились варианты, потому что гугл по этому поводу тоже сложный, иногда бесполезный

1 Ответ

1 голос
/ 21 апреля 2020

Вы создаете сервер, который получает запросы. На своем сервере вы можете выступать в роли клиента, отправляющего запрос на другой сервер. Затем вы можете изменить или объединить полученный ответ в ответ, отправленный исходному клиенту.

См. библиотеку clj-http для выполнения запросов. Clojure Toolbox содержит множество других опций.

Вас также может заинтересовать этот список ресурсов документации .

...