Creando tu primera API

Una vez instalado el framework y creada la estructura de carpetas básicas podemos empezar a desarrollar nuestras Primeras APIs.

Las APIs en el framework son piezas de código que extienden la clase RESTFul y que facilitan la creación de logica y la respuesta correspondiente normalmente en formato JSON.

Por defecto la carpeta que contiene las apis están en la carpeta /api, pero se puede configurar una carpeta complementaria (carpeta donde buscar el código de nuestra API en caso de que no se encuentre en la carpeta /api) añadiendo la variable de configuración con config.json: core.api.extra_path

"core.api.extra_path":  "gs://bucket-name/folder-name",
"development: Vars to work in development": {
"core.api.extra_path": "{{rootPath}}/bucket-name/folder-name"
}

Bajo la carpeta /api (o bajo la carpeta "core.api.extra_path") crearemos ficheros {api-name}.php con estructura básica (ejemplo hello.php)

class API   extends RESTful
{
function main()
{
$this->addReturnData('Hello World');
}
}

Lo que permitirá que nuestro proyecto responda un Hello World: https://{server}/{api-name}

Si lanzamos el servidor local de desarrollo

php -S 0.0.0.0:8080 vendor/cloudframework-io/backend-core-php8/src/dispatcher.php

Podremos acceder a la URL: http://localhost:8080/hello

{
"success":true,
"status":200,
"code":"ok",
"data":"Hello World"
}

Estructura base para programar un API recomendada

Ejemplo /api/hello.php recomendado

<?php
/**
* Basic structure for a CloudFramework API
* last-update 2024-01
* Author: CloudFramework.io
*/
class API extends RESTful
{
var $end_point= '';
function main()
{
//You can restrict methods in main level
if(!$this->checkMethod('GET,POST,PUT,DELETE')) return;

//Call internal ENDPOINT_$end_point
$this->end_point = str_replace('-','_',$this->params[0] ?? 'default');
if(!$this->useFunction('ENDPOINT_'.$this->end_point)) {
return($this->setErrorFromCodelib('params-error',"/{$this->service}/{$this->end_point} is not implemented"));
}
}

/**
* Endpoint to add a default feature. We suggest to use this endpoint to explain how to use other endpoints
*/
public function ENDPOINT_default()
{
// return Data in json format by default
$this->addReturnData([
"end-point default [current]"=>"use /{$this->service}/default"
,"end-point hello"=>"use /{$this->service}/hello"
,"Current parameters"=>$this->params
,"Current formParameters"=>$this->formParams]);
}

/**
* Endpoint to show Hello World message
*/
public function ENDPOINT_hello()
{
//You can restrict methods in endpoint level
if(!$this->checkMethod('GET,POST,PUT,DELETE')) return;

// return Data in json format by default
$this->addReturnData('Advanced hello World');
}
}


Cesta de compras