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 :
| 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:- Utilizzare il metodo POST nella richiesta HTTP.
- 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.
- Impostare il valore dell'intestazione HTTP Content-Type su
application/x-www-form-urlencoded. - 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¶ms={"orderNumber":"5","customerName":{"firstName":"John","lastName":"Doe"}}
Headers:
Accept application/jsonLa 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¶ms={"orderNumber":"5","customerName":{"firstName":"John","lastName":"Doe"}}