Search code examples
javascriptjsongithubjsonpgithub-api

How to parse link header from github API


the github API sends the pagination data for the json results in the http link header:

Link: <https://api.github.com/repos?page=3&per_page=100>; rel="next",
<https://api.github.com/repos?page=50&per_page=100>; rel="last"

since the github API is not the only API using this method (i think) i wanted to ask if someone has a useful little snippet to parse the link header (and convert it to an array for example) so that i can use it for my js app.

i googled around but found nothing useful regarding how to parse pagination from json APIs


Solution

  • The parse-link-header NPM module exists for this purpose; its source can be found on github under a MIT license (free for commercial use).

    Installation is as simple as:

    npm install parse-link-header
    

    Usage looks like the following:

    var parse = require('parse-link-header');
    var parsed = parse('<https://api.github.com/repos?page=3&per_page=100>; rel="next", <https://api.github.com/repos?page=50&per_page=100>; rel="last"')
    

    ...after which one has parsed.next, parsed.last, etc:

    { next:
       { page: '3',
         per_page: '100',
         rel: 'next',
         url: 'https://api.github.com/repos?page=3&per_page=100' },
      last:
       { page: '50',
         per_page: '100',
         rel: 'last',
         url: ' https://api.github.com/repos?page=50&per_page=100' } }