Editing
Routing
(section)
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Routing == [[File:Routing diagram.png|thumb|right|300px|Routing diagram showing the flow of requests in an Elixir application.]] Routing is a crucial aspect of any web application, including those built with the Elixir programming language. It defines how incoming HTTP requests are mapped to specific actions or functions within the application. Elixir provides a powerful and flexible routing mechanism through the Phoenix framework, which is widely used for building web applications. Phoenix employs the concept of routers to handle incoming requests and map them to appropriate controller actions. === Route Definition === Routes in Elixir are defined using the `scope` and `pipe_through` functions within a router module. The route definitions specify the HTTP method, the URL path, and the controller action to be executed when the route is matched. A basic route definition in Elixir looks like this: ```elixir get "/users", UserController, :index ``` The above route definition maps the `GET` request with the URL path `/users` to the `index` action within the `UserController` module. === Route Parameters === Routes in Elixir can also contain parameters, allowing for dynamic routing. These parameters are specified using colons in the URL path and can be extracted within the controller actions. ```elixir get "/users/:id", UserController, :show ``` In the above example, the route will match URLs such as `/users/1` or `/users/42`, with the `id` parameter accessible within the `show` action of the `UserController` module. === Route Groups === To organize routes and apply common configurations, Elixir provides route groups. Route groups allow for defining routes under specific scopes, applying middleware, or sharing route options. ```elixir scope "/api", Api do pipe_through :api resources "/users", UserController end ``` In the above example, all routes defined inside the `scope` block will be prefixed with `/api` and use the `:api` pipeline. === Pipeline and Plugs === A pipeline in Elixir is a series of functions, also known as plugs, that are executed in order for each incoming request. Plugs handle tasks such as authentication, parameter parsing, and request/response transformations. Pipelines can be defined within the router module and are typically associated with route groups or applied to specific routes. ```elixir pipeline :api do plug :accepts, ["json"] plug ApiKeyAuthenticator end ``` In the above example, the `:api` pipeline specifies that requests should only accept JSON and should be authenticated using the `ApiKeyAuthenticator` plug. === Redirects === Elixir allows for creating redirect routes to handle situations where a certain URL needs to be redirected to another URL. ```elixir redirect "/", to: "/dashboard" ``` The above code will redirect requests to the root path (`/`) to the `/dashboard` path. === Conclusion === Routing in Elixir is an integral part of web application development. The Phoenix framework provides a robust routing system that allows for defining routes, handling dynamic parameters, organizing routes in groups, applying pipeline-based middleware, and handling redirects. Understanding and effectively implementing routing in Elixir is key to building scalable, maintainable, and user-friendly web applications. {{Elixir}} {{Phoenix}} [[Category:Web development]] [[Category:Elixir programming language]]
Summary:
Please note that all contributions to Elixir Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Elixir Wiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
View history
More
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information