MediaWiki master
MediaWiki\Rest\Module\ExtraRoutesModule Class Reference

A Module that is based on flat route definitions in the form originally introduced in MW 1.35. More...

Inherits MediaWiki\Rest\Module\MatcherBasedModule.

Collaboration diagram for MediaWiki\Rest\Module\ExtraRoutesModule:

Public Member Functions

 __construct (array $routeFiles, array $extraRoutes, Router $router, ResponseFactory $responseFactory, BasicAuthorizerInterface $basicAuth, ObjectFactory $objectFactory, Validator $restValidator, ErrorReporter $errorReporter)
 
 getDefinedPaths ()
 
 getOpenApiInfo ()
 Return an array with data to be included in an OpenAPI "info" object describing this module.
 
- Public Member Functions inherited from MediaWiki\Rest\Module\MatcherBasedModule
 findHandlerMatch (string $path, string $requestMethod)
 Determines which handler to use for the given path and returns an array describing the handler and initialization context.
Parameters
string$path
string$requestMethod
Returns
array<string,mixed>
  • bool "found": Whether a match was found. If true, the handler or spec field must be set.
  • Handler handler: the Handler object to use. Either "handler" or "spec" must be given.
  • array "spec":" an object spec for use with ObjectFactory - array "config": the route config, to be passed to Handler::initContext() - string "path": the path the handler is responsible for, including placeholders for path parameters. - string[] "params": path parameters, to be passed the Request::setPathPrams() - string[] "methods": supported methods, if the path is known but the method did not match. Only meaningful if "found" is false. To be used in the Allow header of a 405 response and included in CORS pre-flight.

 
 getAllowedMethods (string $relPath)
 Get the allowed methods for a path.
 
 getCacheData ()
 Return data that can later be used to initialize a new instance of this module in a fast and efficient way.
 
 initFromCacheData (array $cacheData)
 Initialize from the given cache data if possible.
 
- Public Member Functions inherited from MediaWiki\Rest\Module\Module
 __construct (Router $router, string $pathPrefix, ResponseFactory $responseFactory, BasicAuthorizerInterface $basicAuth, ObjectFactory $objectFactory, Validator $restValidator, ErrorReporter $errorReporter)
 
 execute (string $path, RequestInterface $request)
 Find the handler for a request and execute it.
 
 getHandlerForPath (string $path, RequestInterface $request, bool $initForExecute=false)
 Create a Handler for the given path, taking into account the request method.
 
 getModuleDescription ()
 Returns fields to be included when describing this module in the discovery document.
 
 getPathPrefix ()
 
 getRouter ()
 
 setCors (CorsUtils $cors)
 
 setStats (StatsFactory $stats)
 

Protected Member Functions

 getConfigHash ()
 Get a config version hash for cache invalidation.
 
 initRoutes ()
 Initialize matchers by calling addRoute() for each known route.
 
- Protected Member Functions inherited from MediaWiki\Rest\Module\MatcherBasedModule
 addRoute ( $method, string $path, array $info)
 
 getMatchers ()
 Get an array of PathMatcher objects indexed by HTTP method.
 
- Protected Member Functions inherited from MediaWiki\Rest\Module\Module
 executeHandler (Handler $handler)
 Execute a fully-constructed handler.
 
 instantiateHandlerObject (array $spec)
 Creates a handler from the given spec, but does not initialize it.
 
 throwNoMatch (string $path, string $method, array $allowed)
 Implementations of getHandlerForPath() should call this method when they cannot handle the requested path.
 

Additional Inherited Members

- Static Public Member Functions inherited from MediaWiki\Rest\Module\Module
static loadJsonFile (string $fileName)
 Loads a module specification from a file.
 
- Public Attributes inherited from MediaWiki\Rest\Module\Module
const CACHE_CONFIG_HASH_KEY = 'CONFIG-HASH'
 
- Protected Attributes inherited from MediaWiki\Rest\Module\Module
string $pathPrefix
 
ResponseFactory $responseFactory
 

Detailed Description

A Module that is based on flat route definitions in the form originally introduced in MW 1.35.

This module acts as a "catch all" since it doesn't use a module prefix. So it handles all routes that do not explicitly belong to a module.

This module responds to requests by matching the requested path against a list of known routes to identify the appropriate handler. The routes are loaded from the route definition files or in extension.json files using the RestRoutes key.

Flat files just contain a list (a JSON array) or route definitions (see below). Annotated route definition files contain a map (a JSON object) with the following fields:

  • "module": the module name (string). The router uses this name to find the correct module for handling a request by matching it against the prefix of the request path. The module name must be unique.
  • "routes": a list (JSON array) or route definitions (see below).

Each route definition maps a path pattern to a handler class. It is given as a map (JSON object) with the following fields:

  • "path": the path pattern (string) relative to the module prefix. Required. The path may contain placeholders for path parameters.
  • "method": the HTTP method(s) or "verbs" supported by the route. If not given, it is assumed that the route supports the "GET" method. The "OPTIONS" method for CORS is supported implicitly.
  • "class" or "factory": The handler class (string) or factory function (callable) of an "object spec" for use with ObjectFactory::createObject. See there for the usage of additional fields like "services". If a shorthand is used (see below), no object spec is needed.

The following fields are supported as a shorthand notation:

  • "redirect": the route represents a redirect and will be handled by the RedirectHandler class. The redirect is specified as a JSON object that specifies the target "path", and optionally the redirect "code".

More shorthands may be added in the future.

Route definitions can contain additional fields to configure the handler. The handler can access the route definition by calling getConfig().

Access: internal
Since
1.43

Definition at line 62 of file ExtraRoutesModule.php.

Constructor & Destructor Documentation

◆ __construct()

MediaWiki\Rest\Module\ExtraRoutesModule::__construct ( array $routeFiles,
array $extraRoutes,
Router $router,
ResponseFactory $responseFactory,
BasicAuthorizerInterface $basicAuth,
ObjectFactory $objectFactory,
Validator $restValidator,
ErrorReporter $errorReporter )
Parameters
string[]$routeFilesList of names of JSON files containing routes See the documentation of this class for a description of the file format.
array<int,array>$extraRoutes Extension route array. The content of this array must be a list of route definitions. See the documentation of this class for a description of the expected structure.

Definition at line 92 of file ExtraRoutesModule.php.

References MediaWiki\Rest\Module\Module\$responseFactory.

Member Function Documentation

◆ getConfigHash()

MediaWiki\Rest\Module\ExtraRoutesModule::getConfigHash ( )
protected

Get a config version hash for cache invalidation.

Returns
string

Reimplemented from MediaWiki\Rest\Module\MatcherBasedModule.

Definition at line 120 of file ExtraRoutesModule.php.

◆ getDefinedPaths()

MediaWiki\Rest\Module\ExtraRoutesModule::getDefinedPaths ( )
Returns
array[]

Reimplemented from MediaWiki\Rest\Module\Module.

Definition at line 175 of file ExtraRoutesModule.php.

◆ getOpenApiInfo()

MediaWiki\Rest\Module\ExtraRoutesModule::getOpenApiInfo ( )

Return an array with data to be included in an OpenAPI "info" object describing this module.

See also
https://spec.openapis.org/oas/v3.0.0#info-object
Returns
array

Reimplemented from MediaWiki\Rest\Module\Module.

Definition at line 246 of file ExtraRoutesModule.php.

◆ initRoutes()

MediaWiki\Rest\Module\ExtraRoutesModule::initRoutes ( )
protected

Initialize matchers by calling addRoute() for each known route.

Reimplemented from MediaWiki\Rest\Module\MatcherBasedModule.

Definition at line 198 of file ExtraRoutesModule.php.

References $path.


The documentation for this class was generated from the following file: