Editing
Plug
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!
== Plug == [[File:plug-logo.png|thumb|220x220px|Plug logo]] '''Plug''' is a specification and a set of libraries that provides a common interface for building modular and composable web applications in the [[Elixir (programming language)|Elixir]] programming language. It serves as the foundation for building web servers, middleware, and other HTTP-related components. === Features === Plug offers various features that make it a popular choice for web development in Elixir. These features include: * '''Modularity''': Plug allows developers to break down their applications into small, reusable components called plugs. Plugs can be combined and composed to build complex web applications. * '''Middleware Pipeline''': With Plug, developers can define a pipeline through which incoming requests flow. Each plug in the pipeline can perform specific tasks such as authentication, request parsing, response formatting, and more. * '''Adapters''': Plug supports various adapters that allow developers to use their preferred web servers, including [[Cowboy (Erlang)|Cowboy]], [[Emiller (Erlang)|Emiller]], and [[Phoenix (web framework)|Phoenix]]. === Architecture === [[File:Plug-Architecture.png|thumb|300x300px|Plug Architecture Diagram]] Plug follows a simple and straightforward architecture. It consists of three main components: * '''Connection''': The connection represents an incoming request and the associated response. It contains information about the request method, headers, cookies, and more. * '''Plugs''': Plugs are the building blocks of a Plug application. They are intermediary functions that process the connection and modify it as it flows through the pipeline. Plugs can be divided into two categories: function plugs and module plugs. * '''Router''': The router is responsible for mapping incoming requests to the appropriate plugs based on the requested path, method, or any other criteria. === Getting Started === To get started with Plug, follow these steps: # Install the necessary dependencies by adding the Plug package to your project's mix.exs file. # Import the Plug package into your module using `use Plug.Router`. # Define your plugs and routes inside the module. # Start the server using `Plug.Adapters.Cowboy.http`. Below is an example of a basic Plug application: ```elixir defmodule MyApp do use Plug.Router plug :hello_world get "/" do send_resp(conn, 200, "Hello, World!") end def hello_world(conn, _opts) do IO.puts "Running hello_world plug" conn end end # Start the server MyApp.start_link ``` === Additional Resources === To learn more about Plug and its capabilities, consider exploring the following topics on this wiki: * [[Middleware]] * [[Routing]] * [[Endpoint Configuration]] For in-depth tutorials and case studies using Plug, please refer to the [[Tutorials]] and [[Case Studies]] sections of this wiki (future articles). === See Also === * [[Phoenix (web framework)|Phoenix]] - A web framework built on top of Elixir and Plug. * [[Cowboy (Erlang)|Cowboy]] - An HTTP server adapter supported by Plug. * [[Elixir (programming language)|Elixir]] - The programming language on which Plug is built. == External Links == * [https://hexdocs.pm/plug/ Plug Documentation] * [https://github.com/elixir-plug/plug Plug GitHub Repository]
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