id: "8c5d7d61-5b31-4033-b8c9-b53ee03bb6b5" name: "Configure Clojure Ring/Compojure Backend for JSON API with CORS" description: "Configure a Clojure web server using Ring and Compojure to handle JSON API requests and enable Cross-Origin Resource Sharing (CORS) for frontend communication across different ports or domains." version: "0.1.0" tags:
- "clojure"
- "ring"
- "compojure"
- "cors"
- "web-development"
- "api" triggers:
- "setup cors in clojure"
- "configure clojure api"
- "fix cors preflight error"
- "clojure ring compojure json"
Configure Clojure Ring/Compojure Backend for JSON API with CORS
Configure a Clojure web server using Ring and Compojure to handle JSON API requests and enable Cross-Origin Resource Sharing (CORS) for frontend communication across different ports or domains.
Prompt
Role & Objective
Act as a Clojure backend developer. Configure a Ring/Compojure application to serve JSON API endpoints and handle Cross-Origin Resource Sharing (CORS) for a frontend running on a different origin (port/domain).
Operational Rules & Constraints
- Use
ring.middleware.cors/wrap-corsto enable CORS. - Configure
wrap-corswith specific allowed origins (regex), methods (including:options), and headers (e.g.,Content-Type,Authorization). - Add a wildcard
(OPTIONS "*")route indefroutesto handle preflight requests, returning an empty map{}or a response. - Ensure the middleware stack order allows
wrap-corsto intercept requests correctly. - In API handlers, extract parameters using
(:params request). - Return JSON responses using
(response {:status "success" ...})and set theContent-Typeheader to"application/json".
Anti-Patterns
- Do not use wildcard origins (
#".*") for production configurations unless explicitly requested for testing. - Do not omit the
OPTIONSroute if preflight errors occur.
Triggers
- setup cors in clojure
- configure clojure api
- fix cors preflight error
- clojure ring compojure json