IBM BPM REST API 支持的 HTTP 方法
HTTP 方法提供了您可以对 IBM® BPM 工件执行的操作,例如创建、读取、更新和删除。
支持以下 HTTP 方法:
| HTTP 方法 | 描述 |
|---|---|
| POST | 创建新资源。 |
| GET | 检索资源。 |
| PUT | 更新现有资源。 |
| DELETE | 删除资源。 |
GET 方法是一种安全的方法,因为资源状态不会因此操作而发生变化。
要点: IBM BPM REST
API 以全球标准时间 (UTC) 格式报告时区。
如果您希望应用程序以其他时区中来显示日期和/或时间,那么可以使用 java.text.DateFormat 的实例,在该实例上设置所需 TimeZone,然后调用 format 以传递要显示的 Date 对象。
以下代码段使用应用程序运行所在的缺省时区:
// 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.
安全性注意事项
在使用 HTTP 方法时,请考虑以下安全性方面:
- 某些防火墙由于安全性注意事项而不允许 HTTP PUT 或 DELETE 流量通过防火墙。为适应此限制,您可以通过以下某种方法发送这些请求:
- 使用 X-Method-Override 或 X-HTTP-Method-Override HTTP 头字段来通过 POST 请求传递 PUT 或 DELETE 请求。
- 如果请求的是与 BPD 有关的资源,可以使用 x-method-override 或 x-http-method-override URI 参数。例如:
POST /rest/bpm/htm/v1/task?...&x-method-override=PUT
- 您可以将某些 HTTP 方法用于与 BPD 有关的资源,以对 JavaScript 表达式求值。考虑到安全性注意事项,缺省情况下不启用 JavaScript 支持。
要启用 JavaScript 支持,请在 Process Server 的 100Custom.xml 文件中设置关联属性:
<properties> <common> <enable-javascript-execution>true</enable-javascript-execution> </common> </properties>
有关 REST API 请求的 URI 长度注意事项
在某些情况下,REST API 请求的 URI 长度可能会超过所支持的 URI 长度,例如,由于浏览器限制或请求 URI 中的查询参数的数量和长度所致。作为变通方法,您可以借助一个使用 application/x-www-form-urlencoded 内容类型的 POST 请求来传递请求。要采用此变通方法,请按照以下方法构造 REST API 请求:
- 在 HTTP 请求中使用 POST 方法。
- 将 X-HTTP-Method-Override HTTP 头设置为原始请求中计划使用的方法。例如,如果您计划原始请求是 PUT 请求,那么将此头的值设置为 PUT。
- 将 Content-Type HTTP 头的值设置为 application/x-www-form-urlencoded。
- 将原始请求 URI 查询字符串的所有请求参数添加到 HTTP 请求主体。
例如,您需要调用以下 REST API 来设置某些输出变量,从而完成任务实例,但请求 URI 过长:
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/json
以下 HTTP 请求显示如何使用 application/x-www-form-urlencoded 内容类型来调用相同的 API: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"}}