I want to customize my spring-data-rest search method path by passing parameter as a path variable like follows
http://localhost:8080/orders/search/customers
You can use custom handler similar to this:
@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);
}
}
More about this can be found here.
Use HttpServletRequest
to get the request url:
findByCustomer(@PathVariable("customerId") Integer customer, HttpServletRequest request){
String request = request.getRequestURL().toString(); // StringBuffer, so use append if you want to...
[...]
}
also you can use request.getQueryString()
to get the query part after ?
.