See the RAML specification.
For RAML 0.8 support follow version 2.
For RAML 1.0 support follow version 3 or above. RAML 1.0 support is still work in progress.
What is done and should work:
- Part of RAML 1.0 type expressions
- Enums
- Union type expression (the "or"
|
operator) - Array of types
discriminator
anddiscriminatorValue
facets- Traits inheritance
To be implemented:
- Libraries
- User defined facets
- Full implementation of type expressions
- The shorthand array and the union type have been implemented
- Bi-dimensional array and the array-union combination have NOT been implemented yet.
- Multiple inheritance
- Annotations
- Overlays and Extensions
- Improved Security Schemes
Requires:
- composer (see https://getcomposer.org)
composer require raml-org/raml-php-parser
$parser = new \Raml\Parser();
$apiDef = $parser->parse($filename, true);
$title = $apiDef->getTitle();
The library can convert schemas into an validation object. There is a default list, or they can be configured manually.
Each schema parser needs to conform to Raml\Schema\SchemaParserInterface
and will return a instance of
Raml\Schema\SchemaDefinitionInterface
.
Additional parsers and schema definitions can be created and passed into the Raml\Parser
constructor
It is also possible to export the entire RAML file to an array of the full endpoints. For example, considering a basic RAML, this can be returned using:
$parser = new \Raml\Parser();
$api = $parser->parse('tests/fixture/simple.raml');
$routes = $api->getResourcesAsUri();
To return:
[
GET /songs => ...
POST /songs => ...
GET /songs/{songId} => ...
DELETE /songs/{songId} => ...
]
$routes = $api->getResourcesAsUri(new \Raml\RouteFormatter\NoRouteFormatter());
There are two Route Formatters included in the package:
NoRouteFormatter
which does nothing and simply echoes the resultSymfonyRouteFormatter
which adds the routes to a SymfonyRouteCollection
composer run-static-analysis
composer check-code-style
composer run-tests