updated router.config + router.controller.api + updated notice.api:3.0 (added Documentation data)

This commit is contained in:
xdrm-brackets 2017-12-13 00:26:20 +01:00
parent 5052032204
commit 99065e37c7
3 changed files with 26 additions and 8 deletions

View File

@ -51,6 +51,10 @@ Plan
- [**1** Default Types](#1---default-types) - [**1** Default Types](#1---default-types)
- [**2** Complex Types](#2---complex-types) - [**2** Complex Types](#2---complex-types)
[**VI.** Documentation](#vi-documentation)
- [**1** API accessible documentation](#1---api-accessible-documentation)
# **I.** Overview # **I.** Overview
## **1** Introduction & features ## **1** Introduction & features
@ -411,4 +415,14 @@ To add a new type, just open the file `/build/api/Checker.php` and add an entry
> **Note:** It is possible to chain `array` type as many as needed. > **Note:** It is possible to chain `array` type as many as needed.
**Ex.:** `array<array<id>>` - Will only match an array containing arrays that only contains `id` entries. **Ex.:** `array<array<id>>` - Will only match an array containing arrays that only contains `id` entries.
# **VI.** Documentation
With the *all-in-config* method, we can generate a consistent documentation or other documents from the `/config/modules.json` file.
## **1** - API accessible documentation
You can request the API for information about the current URI by using the `OPTIONS` HTTP method.

View File

@ -1,6 +1,6 @@
{ {
"methods": [ "GET", "POST", "PUT", "DELETE" ], "methods": [ "GET", "POST", "PUT", "DELETE", "OPTIONS" ],
"routes": { "routes": {
@ -13,12 +13,11 @@
} }
}, },
"/api/{module}/{method}{url_arguments}": { "/api/v/1.0/{uri}": {
"methods": ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
"controller": "api:call", "controller": "api:call",
"arguments": { "arguments": {
"module": "[a-zA-Z_]+", "uri": ".*"
"method": "[a-zA-Z_]+",
"url_arguments": "(\\/[\\w:-]+)*\\/?"
} }
}, },

View File

@ -4,6 +4,7 @@
use \api\core\Request; use \api\core\Request;
use \api\core\Response; use \api\core\Response;
use \api\core\Loader;
class api{ class api{
@ -17,11 +18,13 @@
* *
*/ */
public function __construct($matches){ public function __construct($matches){
/* (1) Rebuild request url */ /* (1) Rebuild request url */
$url = $matches['module'].'/'.$matches['method'].$matches['url_arguments']; $uri = $matches['uri'];
/* (2) Creates request */ /* (2) Creates request */
$this->request = Request::remote($url, $_POST); $this->request = Loader::remote($uri);
} }
@ -29,6 +32,7 @@
* *
*/ */
public function call(){ public function call(){
/* (1) Process response */ /* (1) Process response */
$this->response = $this->request->dispatch(); $this->response = $this->request->dispatch();
@ -37,6 +41,7 @@
echo $this->response->serialize(); echo $this->response->serialize();
return true; return true;
} }
/* POST-CALL /* POST-CALL