HTTP les méthodes prises en charge par les API REST du processus

Les méthodes HTTP fournissent les opérations, telles que la création, la lecture, la mise à jour et la suppression, que vous pouvez effectuer sur les artefacts.
Les méthodes HTTP suivantes sont prises en charge :
Tableau 1. Méthodes HTTP
Méthode HTTP Description
POST Crée une ressource.
GET Extrait une ressource.
PUT Met à jour une ressource existante.
DELETE Supprime une ressource.
L'exemple suivant montre comment utiliser curl pour envoyer une demande POST avec un corps JSON.
curl --location 'https://localhost:9443/ops/system/login' \
--user 'user:password' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
  "refresh_groups": true,
  "requested_lifetime": 7200
}'

La méthode GET est une méthode sécurisée car l'état de la ressource n'est pas modifié par cette opération.

Important: Les API REST indiquent les fuseaux horaires au format UTC (Coordinated Universal Time).
Si vous souhaitez que votre application affiche la date ou l'heure (ou les deux) dans un fuseau horaire différent, vous pouvez obtenir une instance de java.text.DateFormat, définir le TimeZone que vous souhaitez, puis appeler format, en transmettant l'objet Date que vous souhaitez afficher. Le fragment de code suivant utilise le fuseau horaire par défaut dans lequel l'application s'exécute :
// Assuming that "dateFromREST" is a java.util.Date object
DateFormat df = DateFormat.getDateTimeInstance();
TimeZone tz = TimeZone.getDefault();
df.setTimeZone(tz);
String formattedDate = df.format(dateFromREST);
// formattedDate has the date you want to show to the user.

Remarques relatives à la sécurité

Lorsque vous utilisez des méthodes HTTP, prenez en considération les aspects de sécurité suivants :

  • Certains pare-feux n'autorisent pas le trafic HTTP PUT ou DELETE via le pare-feu en raison des mesures de sécurité. Pour prendre en compte cette restriction, vous pouvez envoyer ces requêtes de l'une des manières suivantes :
    • Utilisez les zones d'en-tête HTTP X-Method-Override ou X-HTTP-Method-Override HTTP pour encapsuler une requête PUT ou DELETE via une requête POST.
    • Si la demande concerne une ressource liée au processus, vous pouvez utiliser les paramètres URI x-method-override ou x-http-method-override . Par exemple :
      POST /rest/bpm/htm/v1/task?...&x-method-override=PUT
  • Vous pouvez utiliser certaines des méthodes HTTP pour les ressources liées au processus afin d'évaluer les expressions JavaScript. En raison de considérations de sécurité, la prise en charge de JavaScript n'est pas activée par défaut. Pour activer le support JavaScript, définissez la propriété associée dans le fichier 100Custom.xml du serveur de processus :
    <properties>
      <common>
        <enable-javascript-execution>true</enable-javascript-execution>
      </common>
    </properties> 

Remarques sur la longueur d'URI des requêtes API REST

Dans certains cas, la longueur de l'URI d'une requête API REST peut dépasser la longueur d'URI prise en charge, par exemple en raison des restrictions du navigateur ou du nombre et de la longueur des paramètres de requête dans l'URI de requête.
Pour résoudre ce problème, vous pouvez encapsuler votre requête via une requête POST utilisant le type de contenu application/x-www-form-urlencoded. Pour exploiter cette solution palliative, construisez la requête API REST de la manière suivante :
  1. Utilisez la méthode POST dans la requête HTTP.
  2. Définissez l'en-tête HTTP X-HTTP-Method-Override sur la méthode prévue à partir de votre requête d'origine. Par exemple, si vous envisagiez que votre requête d'origine soit une requête PUT, affectez à cet en-tête la valeur PUT.
  3. Affectez à l'en-tête HTTP Content-Type la valeur application/x-www-form-urlencoded.
  4. Ajoutez tous les paramètres de requête de la chaîne de requête d'URI de votre requête d'origine au corps de la requête HTTP.
Par exemple, vous devez appeler l'API REST suivante pour définir certaines variables de sortie afin de terminer l'instance d'une tâche mais l'URI de requête est trop long :
PUT http://host1.company.com:9080/rest/bpm/wle/v1/task/3?action=finish&params={"orderNumber":"5","customerName":{"firstName":"John","lastName":"Doe"}}
Headers:
  Accept application/json
La requête HTTP suivante montre comment appeler la même API à l'aide du type de contenu application/x-www-form-urlencoded :
POST http://host1.company.com:9080/rest/bpm/wle/v1/task/3
Headers
  Accept application/json
  Content-Type: application/x-www-form-urlencoded
  X-Method-Override:  PUT
Request Body:
  action=finish&params={"orderNumber":"5","customerName":{"firstName":"John","lastName":"Doe"}}