REST url for resource collection, which filters resource by attribute not equal to a given value

resturl

How to design REST url for resource collection, which filters resource by attribute not equal to a given value?

For example, to get the students in 8th grade, we use

GET /students?grade=8

How to do the same, if we need to get the students not in 8th grade? And how to design for less than (<) , greater than (>) etc ?

Best Answer

What I am thinking of doing is including the operator as part of the argument, delimited from the value. I would also define non-symbolic operators to avoid the need for ugly URL-encoding or confusion with the equals sign after the parameter name. For your example, this would be something like this for students not in grade 8:

GET /students?grade=neq|8

Students in grades > 8 would be:

GET /students?grade=gt|8

Students between grades 8 and 10 (inclusive):

GET /students?grade=gte|8,lte|10

This approach can be extended to other filterable fields without the need to add additional parameters to modify the way each field is filtered.