如何使用@PathVariable配置spring-data-rest搜索方法路径

时间:2016-10-05 06:33:50

标签: spring spring-boot spring-data-rest

我想通过将参数作为路径变量传递来自定义我的spring-data-rest搜索方法路径,如下所示

http://localhost:8080/orders/search/customers/{customerId}

findByCustomer(@PathVariable("customerId") Integer customer);

搜索资源列表链接如下

http://localhost:8080/orders/search/customers/%7BcustomerId%7D

如何使用路径参数公开搜索网址?

2 个答案:

答案 0 :(得分:1)

您可以使用与此类似的自定义处理程序:

@RepositoryRestController
public class OrderController {

    @Autowired
    OrderRepository orderRepository;

    @GetMapping("/orders/search/customers/{id}")
    public @ResponseBody ResponseEntity<?> getByCustomers(@PathVariable Integer customer) {
        Order order = orderRepository.findOne(id);
        if(order == null) return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
        Resource<Order> resource = new Resource<Order>(order); 
        return ResponseEntity.ok(resource);
    }
}

有关此内容的更多信息,请here

答案 1 :(得分:0)

使用HttpServletRequest获取请求网址:

findByCustomer(@PathVariable("customerId") Integer customer, HttpServletRequest request){
    String request = request.getRequestURL().toString(); // StringBuffer, so use append if you want to...
    [...]
}

您也可以使用request.getQueryString()?之后获取查询部分。