strapi/docs/3.x.x/en/guides/controllers.md
2017-10-11 12:47:01 +02:00

43 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Controllers
See the [controllers' concepts](../concepts/concepts.md#controllers) for details.
## How to create a controller?
There are two ways to create a controller:
- Using the CLI `strapi generate:controller user`. Read the [CLI documentation](../cli/CLI.md#strapi-generatecontroller) for more information.
- Manually create a JavaScript file named `User.js` in `./api/**/controllers` which contains at least one [endpoint](#adding-endpoints).
## Adding Endpoints
Each controllers action must be an `async` function and receives the `context` (`ctx`) object as first parameter containing the [request context](../guides/requests.md) and the [response context](../guides/responses.md). The action has to be bounded by a route.
#### Example
In this example, we are defining a specific route in `./api/hello/config/routes.json` that takes `Hello.index` as handler. It means that every time a web browser is pointed to the `/hello` URL, the server will called the `index` action in the `Hello.js` controller. Our `index` action will return `Hello World!`. You can also return a JSON object.
**Path —** `./api/hello/config/routes.json`.
```json
{
"routes": [
{
"method": "GET",
"path": "/hello",
"handler": "Hello.index"
}
]
}
```
**Path —** `./api/hello/controllers/Hello.js`.
```js
module.exports = {
// GET /hello
index: async (ctx) => {
ctx.send('Hello World!');
}
};
```
> Note: A route handler can only access the controllers defined in the `./api/**/controllers` folders.