Jump to content

Web Service


Recommended Posts

Bonjour,

J'aimerais savoir si c'est possible de créer de nouvelles urls pour le webservice. Par exemple http:/monsitePresta/api/newUrlGet

Et ensuite pouvoir retourner ce que je souhaite à l'appel de mon url comme par exemple un json.

Merci, bonne jorunée

Link to comment
Share on other sites

Il vous suffit de déclarer une classe issue de ObjectModel et d'imiter le déclarations  relatives aux webservices et leurs fonctions.

Par exemple dans Product.php il y a ceci (partiel)

    protected $webserviceParameters = array(
        'objectMethods' => array(
            'add' => 'addWs',
            'update' => 'updateWs'
        ),
        'objectNodeNames' => 'products',
        'fields' => array(
            'id_manufacturer' => array(
                'xlink_resource' => 'manufacturers'
            ),
            'id_supplier' => array(
                'xlink_resource' => 'suppliers'
            ),
            'id_category_default' => array(
                'xlink_resource' => 'categories'
            ),
            'new' => array(),
            'cache_default_attribute' => array(),
            'id_default_image' => array(
                'getter' => 'getCoverWs',
                'setter' => 'setCoverWs',
                'xlink_resource' => array(
                    'resourceName' => 'images',
                    'subResourceName' => 'products'
                )
            ),

 

Link to comment
Share on other sites

Le 30/11/2020 à 11:53 AM, Thebas57 a dit :

J'ai déjà vu cette doc mais j'ai l'impression qu'on utilise des routes déjà existances 😕

Alors que moi je veux en créer de nouvelles

 

Voici un exemple qui fonctionne pour moi:

Créez d'abord une override dans le dossier /override/classes/webservice appelé WebserviceRequest.php. Nous allons créer un overload de la fonction getResources pour ajouter notre fonction:

class WebserviceRequest extends WebserviceRequestCore
{
    public static function getResources()
    {
        $resources = parent::getResources();
        $resources['jatdev'] = array('description' => 'Example of product list','class' => 'jatdev');
        return $resources;
    }
}

Vous le trouverez dans le back-end (Paramètres avancés -> webservice). Vous en trouverez la liste à la dernière ligne, et nous pouvons nous gérer les autorisations. (Important : vider le cache 🧹)

Ensuite, nous allons créer notre classe de jatdev. Dans /override/classes

class jatdev extends ObjectModel
{
    public static $definition = array(
        'table' => 'product',
        'primary' => 'id_product',
        'fields' => array(//
        )
    );

    protected $webserviceParameters = array(
        'objectNodeNames' => 'jatdev',
        'fields' => array(
            'reference' => array(
                'getter' => 'getProductReference'
            )
        )
    );

    public function __construct($params = null)
    {
        parent::__construct();

        if (isset($params) && strlen($params) > 0) {
            $this->id = $params;
        }
    }

    public function getProductReference()
    {
        $product = new Product($this->id);
        $reference = $product->reference;

        return $reference;
    }
}

Dans cette classe, vous pouvez développer avec les informations et les tables dont vous avez besoin 😊.


Vous pouvez accéder à la liste des produits ou à la liste donnée par l'api :

http://www.url-projet.devel/api/jatdev/?ws_key=TOKEN_ID et aussi http://www.url-projet.devel/api/jatdev/36051/?ws_key=TOKEN_ID (36051 = id dans ma liste)
 

@Thebas57 Dites-nous si ça fonctionne 😉

Edited by jat (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...