Metody HTTP obsługiwane przez interfejsy API REST definicji BPD

Metody HTTP udostępniają operacje, takie jak tworzenie, odczytywanie, aktualizowanie i usuwanie, które można wykonywać na artefaktach.
Obsługiwane są następujące metody HTTP:
Tabela 1. Metody HTTP
Metoda HTTP Opis
POST Tworzy nowy zasób.
GET Pobiera zasób.
PUT Aktualizuje istniejący zasób.
DELETE Usuwa zasób.

Metoda GET jest bezpieczna, ponieważ po jej wykonaniu stan zasobu pozostaje niezmieniony.

Ważne: interfejsy REST API raporują strefy czasowe w formacie UTC (Coordinated Universal Time).
Jeśli aplikacja ma wyświetlać datę lub godzinę w innej strefie czasowej, można pobrać instancję java.text.DateFormat, ustawić na niej TimeZone, a następnie wywołać format, przekazując obiekt Date, który ma być wyświetlany. W poniższym fragmencie kodu używana jest domyślna strefa czasowa, w której działa aplikacja:
// 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.

Zagadnienia związane z zabezpieczeniami

Podczas korzystania z metod HTTP należy wziąć pod uwagę następujące uwagi dotyczące bezpieczeństwa:

  • Niektóre firewalle nie zezwalają na ruch HTTP generowany przez metody PUT lub DELETE ze względów bezpieczeństwa. Aby uwzględnić to ograniczenie, takie żądania można wysłać w jeden z następujących sposobów:
    • Użyj pól nagłówka HTTP X-Method-Override lub X-HTTP-Method-Override, aby tunelować żądania PUT lub DELETE za pośrednictwem żądania POST.
    • Jeśli żądanie dotyczy zasobu związanego z definicją BPD, można użyć parametrów identyfikatora URI produktu x-method-override lub x-http-method-override. Na przykład:
      POST /rest/bpm/htm/v1/task?...&x-method-override=PUT
  • Niektórych metod HTTP zasobów związanych z definicją procesu biznesowego można użyć do wartościowania wyrażeń JavaScript. Ze względów bezpieczeństwa obsługa języka JavaScript nie jest domyślnie włączona. Aby włączyć obsługę języka JavaScript, należy ustawić powiązaną właściwość w pliku 100Custom.xml dla serwera procesów:
    <properties>
      <common>
        <enable-javascript-execution>true</enable-javascript-execution>
      </common>
    </properties> 

Uwagi dotyczące długości identyfikatora URI w żądaniach interfejsu REST API

W niektórych sytuacjach długość identyfikatora URI żądania interfejsu REST API może przekraczać obsługiwaną długość identyfikatora URI, na przykład z powodu ograniczeń przeglądarki lub ze względu na liczbę i długość parametrów zapytania w identyfikatorze URI żądania.
Aby obejść ten problem, można tunelować żądanie za pośrednictwem żądania POST, które korzysta z typu treści application/x-www-form-urlencoded. Aby wykorzystać to obejście, należy utworzyć żądanie interfejsu REST API w następujący sposób:
  1. Użyj metody POST w żądaniu HTTP.
  2. Ustaw w nagłówku HTTP X-HTTP-Method-Override odpowiednią metodę z oryginalnego żądania. Na przykład jeśli oryginalne żądanie miało być żądaniem PUT, ustaw w tym nagłówku wartość PUT.
  3. Ustaw wartość nagłówka HTTP Content-Type na wartość application/x-www-form-urlencoded.
  4. Dodaj wszystkie parametry żądania z oryginalnego łańcucha zapytania żądania URI do treści żądania HTTP.
Na przykład konieczne jest wywołanie następującego interfejsu REST API w celu ustawienia kilku zmiennych wyjściowych i zakończenia instancji zadania, ale identyfikator URI żądania jest zbyt długi:
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
W poniższym żądaniu HTTP przedstawiono sposób wywołania tego samego interfejsu API przy użyciu application/x-www-form-urlencoded content type:
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"}}