Routes
How HTTP methods map to controllers and actions.
Last updated
Was this helpful?
How HTTP methods map to controllers and actions.
Last updated
Was this helpful?
namespace
is a prefix for routes mapped to a certain controller directory. resources
are mapped to controllers within that namespace directory. scope
passes to the module
's controller. For example, consider the following abbreviated code:
The first available resource is :statuses, which is nested under the :api and :v1 namespaces. Thus, the resulting HTTP route will be /api/v1/statuses. The only
defines certain allowed methods, which are to be defined in the controller at app/controllers/api/v1/statuses_controller.rb
.
Within /api/v1/statuses, there is a scope for a module :statuses, where additional resources are defined. The controllers for these resources live in app/controllers/api/v1/statuses/
. For example, :favourite will be handled by the #create action within app/controllers/api/v1/statuses/favourites_controller.rb
and :unfavourite will be handled within the same controller, but by the #destroy action.
There is also a custom method defined for any member
within this scope, or in other words, for any status to be controlled by app/controllers/api/v1/statuses_controller.rb
, which is mapped to GET /api/v1/statuses/:id/context and handled by the :context action defined within that controller.
Maps to HTTP GET, for a list. Handled by the #index action in a controller.
Maps to HTTP GET, for a single view. Handled by the #show action in a controller.
Maps to HTTP POST. Handled by the #create action in a controller.
Maps to HTTP PUT. Handled by the #update action in a controller.
Maps to HTTP DELETE. Handled by the #destroy action in a controller.
Extensible Resource Descriptor (XRD). Advertises existence of Webfinger.
Maps to NodeInfo 2.0 endpoint at /nodeinfo/2.0
, used for advertising software name and version, protocols, usage statistics, and whether registrations are open.
Maps to account settings page.
Used for integration with Keybase, defining which usernames are acceptable and where proofs may be checked.
The sections below this point are under construction.
/users/username
= user URI
/users/username/remote_follow
= remote follow dialog
/users/username/statuses/id
= status URI
/@username
= "toots" tab
/@username/with_replies
= "toots and replies" tab
/@username/media
= "media" tab
/@username/tagged/:hashtag
= tagged statuses by user
/@username/:status_id
= status permalink
/@username/:status_id/embed
= embeddable version
/interact/:status_id
= remote interaction dialog
/explore
= profile directory
/explore/:hashtag
= profiles with this hashtag in bio
/public
= public timeline preview
/about
= landing page
/about/more
= extended description
/terms
= terms of service
/api/oembed
/api/proofs
/api/v1
reblogged_by [index]
favourited_by [index]
reblog [create]
unreblog [POST reblog#destroy]
favourite [create]
unfavourite [POST favourites#destroy]
bookmark [create]
unbookmark [POST bookmarks#destroy]
mute [create]
unmute [POST mutes#destroy]
pin [create]
unpin [POST pins#destroy]
context [GET]
home [show]
public [show]
tag [show]
list [show]
read [POST]
verify_credentials [credentials#show]
peers [index]
activity [show]
authorize [POST]
reject [POST]
clear [POST]
dismiss [POST]
verify_credentials [GET credentials#show]
update_credentials [PATCH credentials#update]
search [show (search#index)]
relationships [index]
statuses [index accounts/statuses]
followers [index accounts/follower_accounts]
following [index accounts/following_accounts]
lists [index accounts/lists]
identity_proofs [index accounts/identity_proofs]
follow [POST]
unfollow [POST]
block [POST]
unblock [POST]
mute [POST]
unmute [POST]
pin [POST]
unpin [POST]
accounts [POST accounts/pins#destroy]
suggestions [GET suggestions#index]
votes [create polls/votes]
subscription [create, show, update, destroy]
accounts [index, show]
enable [POST]
unsilence [POST]
unsuspend [POST]
approve [POST]
reject [POST]
action [create account_actions]
reports [index, show]
assign_to_self [POST]
unassign [POST]
reopen [POST]
resolve [POST]
/api/v2
Mastodon uses Ruby on Rails, which defines its router configuration at config/routes.rb. You may view the for more detailed information, but this page will explain the basics of how Mastodon handles routing.
Used for discovering ActivityPub actor id. See for more information.
[create, show, destroy]
[index]
[index]
[index, destroy]
[index, show, update, destroy]
[index]
[index, destroy]
[create, update]
[index]
[index]
[index]
[index]
[create]
[index]
[index, create, show, update, destroy]
[index]
[index, create]
[create]
[show]
[show, create, destroy]
[show]
[index]
[index, show]
[create, show]
[index, create, show, update, destroy]
[index, create, destroy]
[create, show]
[GET search#index]