Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Specifying sort order in a JSON API

My team recently adopted the json api convention. In the documentation for the api sorting is not addressed.

They do however address filtering in the recommendations page but in my opinion, sorting is not part of filtering since filtering is used to reduce a set while sorting is used to re-order a set.

Given the json api convention, I'd like to know:

  • Should sorting be the responsibility of the api or the client?
  • If it should be the responsibility of the api, are there any guidelines for structuring the url to handle sorting?
like image 506
dipole_moment Avatar asked Dec 24 '16 18:12

dipole_moment


People also ask

How to sort data in API?

You can sort data returned from the REST API endpoints. The “sort” query string key is used to order the data that is returned. To sort data in ascending order, enter the desired property name as query string value. To sort data in descending order, simply precede the desired property name with a minus (-) character.

What is JSON API specification?

JSON:API is a specification for how a client should request that resources be fetched or modified, and how a server should respond to those requests. JSON:API can be easily extended with extensions and profiles.

Is JSON API RESTful?

While SOAP and REST are two leading approaches to transferring data over a network using API calls, JSON is a compact data format that RESTful web services can use. Deciding whether you should create a SOAP vs REST API is an essential question if you are planning to provide a web service.

Which type of API uses JSON format?

JSON API is a format that works with HTTP. It delineates how clients should request or edit data from a server, and how the server should respond to said requests.


1 Answers

Sorting is actually documented on the website: http://jsonapi.org/format/#fetching-sorting

Short summary:

  • use sort as the parameter name
  • if you need to sort by multiple attributes, comma separate them (e.g. sort=lastname,forename
  • if you want to specify the order, use a plus or minus in front of the attribute name (e.g. sort=-lastname,forname), the default order is ascending
like image 87
t-sauer Avatar answered Nov 10 '22 00:11

t-sauer