# weavejester/compojure

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/weavejester-compojure).**

4,115 stars · 260 forks · Clojure · EPL-1.0

## Links

- GitHub: https://github.com/weavejester/compojure
- awesome-repositories: https://awesome-repositories.com/repository/weavejester-compojure.md

## Description

Compojure is a routing library for Ring web applications that maps HTTP requests to handler functions using composable route definitions. It serves as a middleware component for the Ring ecosystem, directing web traffic to specific application logic by matching incoming request methods and paths against defined URI patterns.

The router utilizes a modular architecture that allows related endpoints to be grouped into decoupled modules. This composition model enables the construction of larger applications from smaller, independent routing contexts.

The library provides capabilities for processing web requests, including the transformation of raw URI path parameters into specific data types and the normalization of request URIs. It also includes functionality for serving static assets by mapping request paths to physical files or internal resources.

## Tags

### Web Development

- [HTTP Request Routing](https://awesome-repositories.com/f/web-development/http-request-routing.md) — Maps incoming HTTP request methods and paths to specific handler functions to determine the processing logic. ([source](https://github.com/weavejester/compojure/blob/master/README.md))
- [HTTP Routers](https://awesome-repositories.com/f/web-development/http-routers.md) — Provides a system for mapping incoming network requests to specific handler functions based on URL patterns and HTTP methods.
- [HTTP Request Handling](https://awesome-repositories.com/f/web-development/backend-development/request-response-handling/http-request-handling.md) — Processes web requests by converting path parameters into data types and directing them to business logic.
- [Request Middleware](https://awesome-repositories.com/f/web-development/request-middleware.md) — Provides middleware mechanisms for intercepting and processing HTTP requests before they reach the final application handler.
- [Request Routing](https://awesome-repositories.com/f/web-development/request-routing.md) — Directs incoming network requests to appropriate handlers based on path and method matching. ([source](https://github.com/weavejester/compojure#readme))
- [Ring Application Frameworks](https://awesome-repositories.com/f/web-development/ring-application-frameworks.md) — Enables building web services and APIs based on the Ring specification with structured request and response handling.
- [Ring Middleware](https://awesome-repositories.com/f/web-development/ring-middleware.md) — Implements a middleware component for the Ring ecosystem to manage request dispatching and URI pattern matching.
- [Ring Specification Compatibility](https://awesome-repositories.com/f/web-development/ring-specification-compatibility.md) — Produces standard Clojure maps following the Ring specification for interoperability with JVM web servers.
- [Composable Routers](https://awesome-repositories.com/f/web-development/routing-systems/composable-routers.md) — Provides a hierarchical routing architecture that allows mounting independent route segments into a unified application.
- [Composable Routing Contexts](https://awesome-repositories.com/f/web-development/routing-systems/routing/route-definition-strategies/route-grouping/module-controller-routings/composable-routing-contexts.md) — Group related routes into independent contexts to build a larger application from small, decoupled parts. ([source](http://weavejester.github.io/compojure))
- [Path Parameter Converters](https://awesome-repositories.com/f/web-development/routing-systems/routing/parameter-handling-utilities/path-parameter-converters.md) — Transforms raw URI path parameters into specific data types before they reach the handler. ([source](http://weavejester.github.io/compojure))
- [Static Asset Serving](https://awesome-repositories.com/f/web-development/static-asset-serving.md) — Maps request paths to physical files or internal resources to send static content directly to clients. ([source](http://weavejester.github.io/compojure))
- [Typed Path Parameter Decoders](https://awesome-repositories.com/f/web-development/url-parameter-extraction/typed-path-parameter-decoders.md) — Converts raw string path segments into specified data types like integers or UUIDs during the routing phase.
- [Web Response Generation](https://awesome-repositories.com/f/web-development/web-response-generation.md) — Generates standardized web response objects with appropriate MIME types from internal data structures. ([source](http://weavejester.github.io/compojure))

### Development Tools & Productivity

- [Route Pattern Matching](https://awesome-repositories.com/f/development-tools-productivity/regular-expressions/route-pattern-matching.md) — Matches incoming request URIs against predefined regular expression patterns to select the appropriate handler function.

### Networking & Communication

- [Routing Composition](https://awesome-repositories.com/f/networking-communication/traffic-routing-rules/routing-composition.md) — Implements the nesting of route handlers to build complex, hierarchical application structures from modular rules.

### Software Engineering & Architecture

- [Route-Based Modularization](https://awesome-repositories.com/f/software-engineering-architecture/modular-extension-systems/codebase-modularization/route-based-modularization.md) — Organizes complex web applications by grouping related endpoints into independent, decoupled routing contexts.

### Part of an Awesome List

- [Language Toolkits](https://awesome-repositories.com/f/awesome-lists/devtools/language-toolkits.md) — Concise routing library for Clojure.
- [Web Frameworks](https://awesome-repositories.com/f/awesome-lists/devtools/web-frameworks.md) — Routing library for composing web applications.
