【发布时间】:2018-09-23 09:27:00
【问题描述】:
我正在构建一个 Rest 服务。我的服务资源方法是这样的:
public Response<List<AuditEvent>> getAuditEvents(@QueryParam("filters") List<AuditRequest.Filter> filters,
@QueryParam("orderBy") @DefaultValue("id") String order,
@QueryParam("isDesc") @DefaultValue("true") boolean desc,
@QueryParam("startTime") long startTimestamp,
@QueryParam("endTime") long endTimestamp,
@QueryParam("limit") @DefaultValue("20") int size,
@QueryParam("offset") @DefaultValue("0") int startIndex)
这里的过滤器可以是多个表达式,例如:
/api/audit/query/?filters=username='admin'&filters=customerId=1&limit=1&orderBy=rowId&isDesc=false&offset=2
我也做了一个过滤器类:
public static class Filter {
private String propertyId;
private String op;
private Object value;
}
请给我一个很好的方法来将 Resource 方法中的 List<String> 转换为 List<Filters> 并验证每个字符串表达式是否有效。基本上,我需要一个解析器来将此字符串表达式转换为我的过滤器对象,其中运算符可以是任何有效的运算符。
【问题讨论】: