Configuration du serveur
Using standard HTTP requests, the 4D REST Server allows external applications to access the data of your application directly, i.e. to retrieve information about the dataclasses in your project, manipulate data, log into your web application, and much more.
Pour commencer à utiliser les fonctionnalités REST, vous devez démarrer et configurer le serveur 4D REST.
- Sur 4D Server, l'ouverture d'une session REST nécessite une licence client 4D gratuite disponible.
- Sur 4D monoposte, vous pouvez ouvrir jusqu'à trois sessions REST à des fins de test. Vous devez gérer le cookie de session pour utiliser la même session pour votre application.
Démarrage du serveur REST
Pour des raisons de sécurité, par défaut, 4D ne répond pas aux requêtes REST. If you want to start the REST Server, you must check the Expose as REST server option in the "Web/REST resource" page of the structure settings in order for REST requests to be processed.
Les services REST utilisent le serveur HTTP 4D; vous devez donc vous assurer que le serveur Web 4D est lancé.
Le message d'avertissement "Attention, vérifiez les privilèges d'accès" s'affiche lorsque vous cochez cette option, pour attirer votre attention sur le fait que lorsque les services REST sont activés, l'accès par défaut aux objets de base de données est gratuit tant que les accès REST n'ont pas été configurés.
Configuration de l'accès REST
Par défaut, les accès REST sont ouverts à tous les utilisateurs, ce qui n'est évidemment pas recommandé pour des raisons de sécurité et de contrôle de l'utilisation des licences clientes.
Vous pouvez configurer les accès REST de l'une des manières suivantes :
- assigning a Read/Write user group to REST services in the "Web/REST resource" page of the Structure Settings;
- saisir d'une méthode base
On REST Authentication
pour intercepter et gérer chaque demande REST initiale.
Vous ne pouvez pas utiliser les deux fonctionnalités simultanément. Once an
On REST Authentication
database method has been defined, 4D fully delegates control of REST requests to it: any setting made using the "Read/Write" menu on the Web/REST resource page of the Structure Settings is ignored.
Using the Structure Settings
The Read/Write menu in the "Web/REST resource" page of the structure settings specifies a group of 4D users that is authorized to establish the link to the 4D application using REST queries.
By default, the menu displays <Anyone>, which means that REST accesses are open to all users. Une fois que vous avez spécifié un groupe, seul un compte utilisateur 4D appartenant à ce groupe peut être utilisé pour accéder à 4D via une requête REST. Si un compte utilisé n'appartient pas à ce groupe, 4D renvoie une erreur d'authentification à l'expéditeur de la requête.
Pour que ce paramètre prenne effet, la méthode base
On REST Authentication
ne doit pas être définie. If it exists, 4D ignores access settings defined in the Structure Settings.
Méthode base On REST Authentication
La méthode base On REST Authentication
vous permet de contrôler de manière personnalisée l’ouverture des sessions REST sur 4D. Cette méthode base est automatiquement appelée lorsqu'une nouvelle session est ouverte à l'aide d'une requête REST. Lorsqu'une requête d’ouverture de session REST est reçue, les identifiants de connexion sont fournis dans l’en-tête de la requête. La méthode base On REST Authentication
est appelée afin de vous permettre d’évaluer ces identifiants. You can use the list of users for the 4D application or you can use your own table of identifiers. Pour obtenir plus d'informations, veuillez vous reporter à la documentation de la méthode base On REST Authentication
.
Exposer les tables et les champs
Once REST services are enabled in the 4D application, by default a REST session can access all tables and fields of the 4D database through the datastore interface. Thus, it can use their data. Par exemple, si votre base de données contient une table [Employee], il est possible d'écrire :
http://127.0.0.1:8044/rest/Employee/?$filter="salary>10000"
Cette requête retournera tous les employés dont le champ "salary" est supérieur à 10 000.
Les tables et/ou champs 4D dont l'attribut est "invisible" sont également exposés par défaut dans REST.
Si vous souhaitez personnaliser les objets du datastore accessibles via REST, vous devez désactiver l'exposition de chaque table et/ou champ que vous souhaitez masquer. Lorsqu'une requête REST tente d'accéder à une ressource non autorisée, 4D retourne une erreur.
Exposer des tables
Par défaut, toutes les tables sont exposées dans REST.
Pour des raisons de sécurité, vous pouvez choisir d'exposer uniquement certaines tables du datastore aux appels REST. Par exemple, si vous avez créé une table [Users] stockant les noms d'utilisateur et les mots de passe, il serait préférable de ne pas l'exposer.
Pour supprimer l'exposition REST d'une table :
Affichez l'Inspecteur de table dans l'Editeur de structure et sélectionnez la table à modifier.
Décochez l'option Exposer en tant que ressource REST :
Procédez ainsi pour chaque table dont l'exposition doit être modifiée.
Exposer des champs
Par défaut, touts les champs d'une base 4D sont exposés dans REST.
Vous pouvez choisir d'exposer certains champs de vos tables à REST. Par exemple, si vous ne souhaitez pas exposer le champ [Employees]Salary.
Pour supprimer l'exposition REST d'un champ :
Affichez l'Inspecteur de champ dans l'Editeur de structure et sélectionnez le champ à modifier.
Décochez la case Exposer en tant que ressource REST pour le champ.
Répétez cette opération pour chaque champ dont l'exposition doit être modifiée.
Pour qu'un champ soit accessible via REST, la table parente doit l'être également. Si la table parente n'est pas exposée, aucun de ses champs ne le sera, quel que soit leur statut.