I have a repository on github which contains a number of csv, json, yml data files in the root directory of the repository.
How do I get it to serve those files using Github Pages?
So for eg: when I go to http://username.github.io/reponame/ followed by
/posts - serve the contents of the posts.json file/users - serve the contents of the users.json file/comments - serve the contents of the comments.json file/posts.csv - serve the contents of the posts.csv fileYou just need to add .json files in your repository and you can access them like a normal JSON API
In the repository username.github.io/reponame add the following files
posts.json
[
  {"id": 1, "title": "Title 1"},
  {"id": 2, "title": "Title 2"}
]
users.json
[
  {"name": "abc", "email": "[email protected]"},
  {"name": "xyz", "email": "[email protected]"}
]
comments.json
[
  {"post_id": "1", "text": "Comment 1"},
  {"post_id": "2", "text": "Comment 2"}
]
posts.csv
id,title
1,Title 1
2,Title 2
And access them with
http://username.github.io/reponame/posts.jsonhttp://username.github.io/reponame/users.jsonhttp://username.github.io/reponame/comments.jsonhttp://username.github.io/reponame/posts.csvWorking example -
You can create index.json instead of index.html to get application/json; charset=utf-8 header.
That is, create:
- posts/index.json to be served at http://username.github.io/reponame/posts/,
- users/index.json to be served at http://username.github.io/reponame/users/,
etc.
Note that as a directory, access without trailing slash (http://username.github.io/reponame/posts) returns 301 redirect to same path with trailing slash.  That is, it works but your client need to follow redirects (curl by default doesn't, curl --location does) and is slightly slower due to extra round-trip...
See https://github.com/cben/sandbox/tree/master/json directory for a working example (served at https://cben.github.io/sandbox/json/).
P.S. avoid more than one index.* and README* file in one dir; when I added a README.md alongside the index.json, the README won and got served at json/, so I had to rename it to something else.
I'm adding a code block on how to consume json from github:
function logResults(json) {
    console.log(json)
}
$.ajax({
    url: "https://raw.githubusercontent.com/cben/sandbox/master/json/index.json",
    dataType: "json"
}).done(function(result){
    console.log(result);
});
Please check the example at jfiddle: https://jsfiddle.net/v_alishauskaite/dxm8cvkL/1/
This type of url (eg : /posts) will only work with html files. You can name your json file posts.html and set its front matter like this :
---
layout: null
permalink: /posts/
---
{ "variable": "value" }
You will then reach your file at /posts or /posts/.
Only drawback is that the returned file is /posts/index.html which is served with Content-Type: text/html mime type and not the expected application/json.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With