Résumé
Je suis en train de développer un serveur pour être une sorte de proxy en Clojure, avec pedestal service + lein comme base :
- Recevoir des demandes
- Transférer les demandes vers des serveurs externes
- Faire plusieurs requêtes de serveur à serveur pour alimenter un json plus important et le renvoyer en une seule requête au client.
Il est facile à coder et il existe de nombreuses ressources sur la manière de desservir un itinéraire,
mais je n'ai pas trouvé de solution simple, comment faire reposer un piédestal Clojure
ainsi que les itinéraires de transfert
Exemple
- Le client appelle [GET] /billing => proxy-clojure-server
- proxy-clojure-server authentifier la demande avec les informations d'identification du client => serveur d'authentification
- proxy-clojure-server remplit le fichier json avec les données de facturation => serveur de facturation
- proxy-clojure-server remplit le fichier json avec les données du client => serveur-client
- proxy-clojure-server renvoie 200 avec le JSON complet résolu
Mise en place
- J'ai un projet avec une structure similaire : lein new pedestal-service my-app
Ce que j'ai essayé
- J'ai essayé d'utiliser quelque chose comme https://github.com/tailrecursion/ring-proxy
Exemple :
(ns your-ns
(:require [tailrecursion.ring-proxy :refer [wrap-proxy]]))
(def app
(-> routes
(wrap-proxy "/remote" "http://some.remote.server/remote")))
Je n'arrive pas à combiner le système de routage de la console avec cette solution de proxy, les routes sont différentes, il semble que je doive adopter une approche différente.
Clause de non-responsabilité
- Je sais que le forwarding de base peut être fait par nginx, varnish, ou tout autre load balancer. Mais mon idée ici est de remplir les données de différents serveurs, ce qui simplifie la tâche du client.
- Je suis un débutant en Clojure comme vous l'avez peut-être remarqué. Et je n'ai plus d'options, parce que Google est aussi compliqué, parfois inutile.