如何在Spring REST

时间:2015-06-04 04:41:10

标签: spring rest

我的查询参数如下:

q=name:abc+age:20+roleid:(23|45)|audeince:(23|24).Here + is for AND | is for OR

我必须接受这个查询参数,因为它存在于我的spring控制器中,并且必须向solar查询才能获取数据。

@Controller
@RequestMapping("/user")
public class BooksController {
 @RequestMapping(value="/details", method=RequestMethod.GET)
public ResponseEntity<?> getUser(final HttpServletRequest request) {

  String params = requestParams.get("q")[0];
    //passing this string to make query in apache solar
}
}

我需要编写一个解析器来分割param值以进行solar query.how编写一个查询解析器来拆分上面的url以使solar query满足OR AND condition.name:abc+age:20+roleid: (23 | 45)| audeince:(23 | 24)表示创建一个太阳查询,其中name = abc和age = 20,roleid在(23,24)或者为(23,24)中的观众。这样用户发送查询。 / p>

例如:姓:(ABC | BCD)+名字:ABC + EMAILID:ABC + DSID:ABC | countryCd:US + audienceId:(123 + 678)

首先使用这样的正则表达式转换 firstName:(abc | bcd)+ ----------- segment1

名字:ABC + .............分段2

EMAILID:ABC + .............段3

DSID:ABC | -------------- segment4

countryCd:US + ---------- segment5

audienceId:(123 + 678)------第6段;

像许多细分可能会出现在网址中

我有一个名为

的班级

类Queryobj {

私人字符串字段;

私人清单值;

private String internalOperator;

private String externalOperator;

}

firstName:(abc | bcd)+再次使用正则表达式映射像这样

字段=名字

值= {ABC,BCD}

internalOperator = |

externalOperator = +

喜欢第二段emailId:abc +

字段= EMAILID

值= ABC

internalOperator =空

externalOperator = +

对于其他段也是如此。如果有n个段我们有n个对象。

之后将每个对象添加到Linked List。如果internalOperator或externalOperator为null,则将其保留为null。如何实现

1 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式模式来获取&#34; key:value运算符&#34;段

Pattern keyValuePattern = Pattern.compile("[\\w]+:([\\w@.]+|\\([\\w|+@.]+\\))[+|]?");