robert gagnon
robert gagnon

Reputation: 311

Spring rest controller and paging

I use spring 4.2 and rest and I would like to use paging.

What is the way to use paging with spring rest controller?

@RequestMapping(value = "/members/{memberId}/payments", method = RequestMethod.GET)
    public Page<PaymentDto> getPaymentByMemberId(@PathVariable("memberId") Long memberId, Pageable pageable) {
        return paymentService.getPaymentByMemberId(memberId, pageable);
    }

Is it a good way to manage this?

If for some area in the application, we don't want to use paging, We need to create another url?

if I want all payments for a member, I will do:

/members/{memberId}/payments

and for the paging, it's there a way to said to spring to do something like:

/members/{memberId}/payments?pageNumber=1&PageSize=10

Upvotes: 3

Views: 5913

Answers (2)

You need write annotation @RestController for your controller

@RestController
public class PaymentController {
...
    @RequestMapping(value = "/members/{memberId}/payments", method = RequestMethod.GET)
    public Page<PaymentDto> getPaymentByMemberId(@PathVariable("memberId") Long memberId, Pageable pageable) {
        return paymentService.getPaymentByMemberId(memberId, pageable);
    }
}

Request example: /members/12345/payments?page=0&size=50

Upvotes: 0

Shaheer
Shaheer

Reputation: 1643

One way to do this is:

@RequestMapping(value = "/members/{memberId}/payments", method = RequestMethod.GET) 
public List<PaymentDto> getPaymentByMemberId(@PathVariable("memberId") Long memberId, @RequestParam(value = "pageNumber", required = false) final Integer pageNumber,@RequestParam(value = "pageSize", required = false) final Integer pageSize) {
                PageRequest pageReq = new PageRequest((pageNumber == null ? 0 : pageNumber), (pageSize == null ? 0 : pageSize));
                Page<PaymentDto> page = paymentService.getPaymentByMemberId(memberId, pageReq);
                return page.getContent();
        }

Upvotes: 4

Related Questions