HTTP metodi supportati dalle API REST del processo

I metodi HTTP forniscono le operazioni, quali creazione, lettura, aggiornamento e cancellazione, che si possono eseguire sugli artefatti.
Sono supportati i seguenti metodi HTTP :
Tabella 1. Metodi HTTP
Metodo HTTP Descrizione
POST Crea una nuova risorsa.
GET Richiama una risorsa.
PUT Aggiorna una risorsa esistente.
DELETE Elimina una risorsa.
Il seguente esempio mostra come utilizzare curl per inviare una richiesta POST con un corpo 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
}'

Il metodo GET è un metodo sicuro perché lo stato della risorsa rimane invariato da questa operazione.

Importante: le API REST notificano i fusi orari in formato UTC (Coordinated Universal Time).
Se si desidera che la propria applicazione visualizzi la data o l'ora (o entrambe) in un diverso fuso orario, è possibile ottenere un'istanza di java.text.DateFormat, impostare il TimeZone desiderato e quindi richiamare format, passando l'oggetto Date che si desidera visualizzare. Il seguente frammento di codice utilizza il fuso orario predefinito in cui è in esecuzione l'applicazione:
// 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.

Considerazioni sulla sicurezza

Quando si utilizzano i metodi HTTP, tenere conto dei seguenti aspetti di sicurezza:

  • Alcuni firewall non consentono il traffico HTTP PUT o DELETE attraverso il firewall per motivi di sicurezza. Per soddisfare questa restrizione, è possibile inviare queste richieste in uno dei modi seguenti:
    • Usare i campi dell'intestazione HTTP X-Method-Override o X-HTTP-Method-Override per creare un tunnel tra una richiesta PUT o DELETE e una richiesta POST.
    • Se la richiesta è per una risorsa legata al processo, si possono usare i parametri x-method-override o x-http-method-override URI. Ad esempio:
      POST /rest/bpm/htm/v1/task?...&x-method-override=PUT
  • È possibile utilizzare alcuni dei metodi di HTTP per le risorse legate ai processi per valutare le espressioni di JavaScript. Per motivi di sicurezza, il supporto JavaScript non è abilitato per impostazione predefinita. Per abilitare il supporto di JavaScript, impostare la proprietà associata nel file 100Custom.xml per il server di processo:
    <properties>
      <common>
        <enable-javascript-execution>true</enable-javascript-execution>
      </common>
    </properties> 

Considerazioni sulla lunghezza dell'URI per le richieste API REST

In alcune situazioni, la lunghezza di un URI della richiesta API REST potrebbe superare la lunghezza dell'URI supportata, ad esempio, a causa delle limitazioni del browser o del numero e della lunghezza dei parametri di query nell'URI della richiesta.
Come soluzione temporanea, puoi eseguire il tunneling della tua richiesta tramite una richiesta POST che utilizza il tipo di contenuto application/x-www-form-urlencoded . Per sfruttare la soluzione temporanea, creare la richiesta API REST nel seguente modo:
  1. Utilizzare il metodo POST nella richiesta HTTP.
  2. Impostare l'intestazione HTTP X-HTTP-Method-Override sul metodo previsto dalla richiesta originale. Ad esempio, se si intendeva che la richiesta originale fosse una richiesta PUT , impostare il valore di questa intestazione su PUT.
  3. Impostare il valore dell'intestazione HTTP Content-Type su application/x-www-form-urlencoded.
  4. Aggiungere tutti i parametri di richiesta della stringa di query dell'URI della richiesta originale al corpo della richiesta HTTP.
Ad esempio, è necessario chiamare la seguente API REST per impostare alcune variabili di output per completare un'istanza di attività, ma l'URI della richiesta è troppo lungo:
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 seguente richiesta HTTP mostra come chiamare la stessa API utilizzando il tipo di contenuto 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"}}