Flowable入门系列文章92 - 一般可流动的REST原则 03

1、请求参数

1.1、网址片段

在段包含特殊字符的情况下,作为url一部分的参数(例如deploymentId参数中的http://host/flowablerest/service/repository/deployments/{deploymentId})需要正确转义(请参阅URL编码或百分比编码)。大多数框架都内置了这个功
能,但应该考虑到这一点。特别是对于可能包含正斜杠(例如部署资源)的段,这是必需的。

1.2、剩余的URL查询参数

在URL中作为查询字符串添加的参数(例如,所使用的名称参数http://host/flowable-rest/service/deployments?name=Deployment)可
以具有以下类型,并在相应的REST-API文档中提及:
表1. URL查询参数类型

类型格式
纯文本参数。可以包含URL中允许的任何有效字符。如果是XXXLike参数,字符串应该包含通配符%(正确的url编码)。这允许指定类似搜索的意图。例如Tas%匹配从Tas开始的所有值。
整数代表整数值的参数。只能包含数字非十进制值,介于-2.147.483.648和2.147.483.647之间。
代表长值的参数。只能包含-9.223.372.036.854.775.808和9.223.372.036.854.775.807之间的数字非十进制值。
布尔表示布尔值的参数。可以是true或者false。除了这两个值以外的所有其他值都会引起405 - Bad request响应。
日期代表日期值的参数。使用时间和日期组件(例如),使用ISO-8601日期格式(参见维基百科上的ISO-86012013-04-03T23:45Z)。

1.3、JSON 参数

表2. JSON参数类型

类型格式
纯文本参数。如果是XXXLike参数,字符串应该包含通配符%。这允许指定类似搜索的意图。例如Tas%匹配从Tas开始的所有值。
整数表示整数值的参数,使用JSON号码。只能包含数字非十进制值,介于-2.147.483.648和2.147.483.647之间。
表示长整型值的参数,使用JSON号码。只能包含-9.223.372.036.854.775.808和9.223.372.036.854.775.807之间的数字非十进制值。
日期表示日期值的参数,使用JSON文本。使用时间和日期组件(例如),使用ISO-601日期格式(参见维基百科上的ISO-86012013-04-03T23:45Z)。

1.4、分页和排序

分页和订单参数可以作为查询字符串添加到URL中(例如,使用的名称参数http://host/flowable-rest/service/deployments?sort=name)。

参数默认值描述
分类每个查询实现不同每个查询实现的默认值和允许值不同的排序键的名称。
订购ASC排序顺序可以是asc或desc。
开始0允许分页结果的参数。默认情况下,结果将从0开始。
尺寸10允许分页结果的参数。默认情况下,大小将是10。

1.5、JSON查询变量格式

{
"name" : "variableName",
"value" : "variableValue",
"operation" : "equals",
"type" : "string"
}

表3.变量查询JSON参数

参数需要描述
名称没有要包含在查询中的变量的名称。如果equals在某些查询中使用,则可以为空,以查询具有给定值的任何变量名称的资源。
包含在查询中的变量的值应该包含给定类型的正确格式。
操作者在查询中使用的运算符可以具有以下值:equals, notEquals, equalsIgnoreCase,notEqualsIgnoreCase, lessThan,greaterThan, lessThanOrEquals,greaterThanOrEquals和like。
类型没有要使用的变量的类型。省略时,类型将从value参数中扣除。任何JSON文本值将被视为类型string,类型的JSON布尔值,类型的booleanJSON数字long或integer取决于数字的大小。如有疑问,建议使用明确的类型。下面列出了开箱即用的支持类型。

表4.默认查询JSON类型

类型名称描述
值是通过线程转换为java.lang.String。
值是通过线程转换为java.lang.Integer。
整数值是通过线程转换为java.lang.Integer。
值是通过线程转换为java.lang.Long。
值是通过线程转换为java.lang.Double。
布尔值是通过线程转换为java.lang.Boolean。
日期价值被视为并转换为一个java.util.Date。JSON字符串将使用ISO-8601日期格式进行转换。

1.6、变量表示

当使用变量(执行/进程和任务)时,REST-api使用一些常见的原则和JSON格式来读写。变量的JSON表示如下所示:

{
"name" : "variableName",
"value" : "variableValue",
"valueUrl" : "http://...",
"scope" : "local",
"type" : "string"
}

表5.变量JSON属性

参数需要描述
名称变量的名称。
没有变量的值。当写入一个变量并被value省略时,null将被用作值。
valueUrl没有当读取类型的变量binary或serializable,该属性将指向其中原始二进制数据可以从获取的URL。
范围没有变量的范围。如果local该变量在请求的资源上明确定义。何时global,该变量是在其所请求的资源的父级(或父级树中的任何父级)上定义的。当写一个变量,并且范围被省略时,global被假定。
类型没有变量的类型。有关类型的更多信息,请参阅下表。当写一个变量,该值被省略,则类型从原始JSON属性请求类型中扣除并仅限于任一string,double,integer和boolean。建议总是包括一个类型,以确保没有错误的类型可以做的假设。

表6.变量类型

类型名称描述
价值是作为一个线程java.lang.String。编写变量时使用原始的JSON文本值。
整数价值是作为一个线程java.lang.Integer。在编写时,JSON数值被用作转换的基础,回退到JSON文本。
价值是作为一个线程java.lang.Short。在编写时,JSON数值被用作转换的基础,回退到JSON文本。
价值是作为一个线程java.lang.Long。在编写时,JSON数值被用作转换的基础,回退到JSON文本。
价值是作为一个线程java.lang.Double。在编写时,JSON数值被用作转换的基础,回退到JSON文本。
布尔价值是作为一个线程java.lang.Boolean。编写时,使用JSON布尔值进行转换。
日期价值被视为一个java.util.Date。写入时,JSON文本将使用ISO-8601日期格式进行转换。
二进制二进制变量,视为一个字节数组。该value属性为空,valueUrl包含一个指向原始二进制流的URL。
序列化Serializable Java对象的序列化表示。与binary类型一样,该value属性为空,valueUrl包含一个指向原始二进制流的URL。所有可序列化的变量(不是上述任何类型的变量)将作为这种类型的变量公开。

可以使用自定义JSON表示(简单值或复杂/嵌套的JSON对象)支持其他变量类型。通过扩展该initializeVariableConverters()方法org.flowable.rest.service.api.RestResponseFactory,可以添加其他org.flowable.rest.service.api.engine.variable.RestVariableConverter类来支持将POJO转换为适合通过REST传输的格式,并将REST值转换回POJO。杰克逊完成了对JSON的实际转换。

上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值