skyline / api
The Skyline API package provides an action controller to manager api requests
v8.0.3
2023-03-05 09:23 UTC
Requires
- php: ^8
- ext-dom: *
- ext-json: *
- ext-simplexml: *
- skyline/core-application: ^8
- symfony/http-foundation: ^6
Requires (Dev)
Suggests
- ext-simplexml: To enable simple xml model elements
README
The Skyline API package offers you an action controllers to manage api requests.
Its in addition to the Skyline API Component.
Insallation
$ composer require skyline/api
You may also be interested on skyline/component-api
which defines several javascript routines to access the api.
Usage
use Skyline\API\Controller\AbstractAPIActionController; use Symfony\Component\HttpFoundation\Request; use Skyline\Kernel\Service\CORSService; class MyAPIActionController extends AbstractAPIActionController { // Routing to the action is done by default in the // routing configuration or annotation compiler public function myAction() { // ... } // But this action gets only performed if ... public function acceptsAnonymousRequest(Request $request): bool { // ... the request has an origin header field or return SkyGetRunModes() > SKY_RUNMODE_PRODUCTION; } public function acceptsCrossOriginRequest(Request $request): bool { // ... the request came from the same origin or return CORSService::isRegistered( $request->getHost() ); } public function acceptOrigin(Request $request, bool &$requireCredentials = false): bool { // ... the request is cross origin, decide to accept it generally or specified. // Also declare, if the request must identify itself. return CORSService::getAllowedOriginOf($request, $requireCredentials) ? true : false; } // By version 0.8.5 this method must decide if the request must be verified. // This method gets called right before the main action is handled. protected function enableCsrfCheck(Request $request): bool { if(strcasecmp($request->getMethod(), 'GET') === false) return true; return false; } }