mirko/t3customroutes

TYPO3 extension used to register custom api endpoints

Installs: 295

Dependents: 0

Suggesters: 0

Security: 0

Stars: 8

Watchers: 0

Forks: 0

Open Issues: 0

Type:typo3-cms-extension

0.0.2 2023-02-02 15:32 UTC

This package is auto-updated.

Last update: 2024-03-30 00:33:16 UTC


README

The "Custom Routes" extension (EXT:t3customroutes) provide possibility to declare own api endpoints with own url

Installation

composer require mirko/t3customroutes 

Configuration

import route enhancer by adding following line on bottom of your site config.yaml.

imports:
  - { resource: "EXT:t3customroutes/Configuration/Routing/config.yaml" }

If you do not want to use import you can also manually add new route enhancer of type T3apiResourceEnhancer directly in your site configuration.

routeEnhancers:
  CustomRoutes:
    type: RoutesResourceEnhancer

Creating custom api endpoint

Next step is to register custom routes in EXT:{extkey}/Configuration/routes.yaml

Creating Routes in YAML

# config/routes.yaml
blog_list:
  path: /blog
  # the controller value has the format 'controller_class::method_name'
  controller: App\Controller\BlogController::list

Matching HTTP Methods

By default, routes match any HTTP verb (GET, POST, PUT, etc.) Use the methods option to restrict the verbs each route should respond to:

# config/routes.yaml
api_post_show:
  path: /api/posts/{id}
  controller: App\Controller\BlogApiController::show
  methods: GET

api_post_edit:
  path: /api/posts/{id}
  controller: App\Controller\BlogApiController::edit
  methods: PUT

Method Parameters

class BlogController
{
    public function list(int $page)
    {
        return 'basic api route';
    }
}
# config/routes.yaml
blog_list:
  path: /blog/{page}
  controller: App\Controller\BlogController::list
  defaults:
    page: 1

blog_show:
# ...

You may also need to configure dependency injection in your extensions

TYPO3 main documentation

Contributing

You can contribute by making a pull request to the master branch of this repository.