---
title: "Feature: #69916 - PSR-7-based Routing for Backend AJAX Requests"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:feature-69916"
source: "Changelog/7.6/Feature-69916-PSR-7-basedRoutingForBackendAJAXRequests.rst"
typo3-version: "7.6"
typo3-major: 7
type: "feature"
issue: 69916
forge: "https://forge.typo3.org/issues/69916"
tags: ["PHP-API", "Backend"]
rendered: "2026-09-19T12:12:50+00:00"
---

# Feature: #69916 - PSR-7-based Routing for Backend AJAX Requests {#feature-69916}

See [forge#69916](https://forge.typo3.org/issues/69916)

## Description {#description}

Support for PSR-7-based Routing for Backend AJAX requests has been added.

## Impact {#impact}

To add a route for an AJAX request, create the `Configuration/Backend/AjaxRoutes.php` of your extension:

```php
return [
	// Does something
	'unique_route_name' => [
		'path' => '/toolcollection/some-action',
		'target' => \ACME\Controller\SomeController::class . '::myAction',
	]
];
```

The unique_route_name (route identifier) parameter acts as the previously known key to
call `BackendUtility::getAjaxUrl()` passed as parameter to the action refers to the route path,
**not** to the route identifier itself. AJAX handlers configured in `AjaxRoutes.php` are **not** compatible
with definitions in `ext_localconf.php` registered by `ExtensionManagementUtility::registerAjaxHandler()`
due to different method signatures in the target actions, using PSR-7.

The route identifier is used in `BackendUtility::getAjaxUrl()` as `$ajaxIdentifier` and as key in the global
`TYPO3.settings.ajaxUrls` JavaScript object.
