I have a route defined as:
(POST "/login" [req] req)
in my httpkit
server. I wanted to test this route so I tried to use:
(client/post "http://localhost:3000/login" {})
using clj-http.client
, but I just get error 403 (forbidden) when I attempt to run it (in calva). Any one have any ideas? Works fine for GET routes!
EDIT: As the request of @cfrick, here is a MRE:
server.clj
(ns api.server
(:require [org.httpkit.server :as server]
[compojure.core :refer [defroutes GET POST]]
[ring.middleware.defaults :as default])
(defn auth-start [req]
{:status 200
:headers {"Content-Type" "text/html"}
:body "<h1> logged-in </h1>"})
(defroutes app-routes
(GET "/" [] "<h1> Hello </h1>")
(POST "/login" [req] auth-start)
(route/not-found "Error, page not found!"))
(defn -main
"This is our main entry point"
[& args]
(let [port (Integer/parseInt (or (env :PORT) "3000"))]
; Run the server with Ring.defaults middleware
(server/run-server (default/wrap-defaults #'app-routes default/site-defaults) {:port port})
; Run the server without ring defaults
;(server/run-server #'app-routes {:port port})
(println (str "Running webserver at http://127.0.0.1:" port "/"))))
test.clj
(ns api.test
(:require [clj-http.client :as client]))
(client/post "http://localhost:3000/login" {})
project.clj dependencies:
:dependencies [[org.clojure/clojure "1.11.1"]
; Compojure - A basic routing library
[compojure "1.6.1"]
; Our Http library for client/server
[http-kit "2.3.0"]
; Ring defaults - for query params etc
[ring/ring-defaults "0.3.2"]
; For testing api routes
[clj-http "3.12.3"]]