Back-end customization
All elements of Strapi's back end, like routes, policies, middlewares, controllers, services, models, requests, responses, and webhooks, can be customized.
All elements of Strapi's back end, like routes, policies, middlewares, controllers, services, models, requests, responses, and webhooks, can be customized.
Controllers are JavaScript files that contain a set of methods, called actions, reached by the client according to the requested route. Whenever a client requests the route, the action performs the business logic code and sends back the response. Controllers represent the C in the model-view-controller (MVC) pattern.
Learn how to authenticate use custom services and controllers using our FoodAdvisor example
Send email from your server or externals providers.
The diagram represents a simplified version of how a request travels through the Strapi back end, with global middlewares highlighted. The backend customization introduction page includes a complete, interactive diagram.
Strapi comes with plugins that can be installed from the Marketplace or as npm packages. You can also create your own plugins (see plugins development) or extend the existing ones.
Strapi policies are functions that execute specific logic on each request before it reaches the controller. Policies can be customized according to your needs.
In Strapi 5, REST API input is validated by default in controllers, instead of accepting invalid data and sanitizing it silently.
Strapi routes handle requests to your content and are auto-generated for your content-types. Routes can be customized according to your needs.
Strapi's Server API for plugins allows a Strapi plugin to customize the back end part (i.e. the server) of your application.
Strapi services are a set of reusable functions, useful to simplify controllers logic.