1
0
mirror of https://github.com/TeamNewPipe/web-api synced 2025-10-06 00:02:51 +02:00
Files
web-api/README.md

28 lines
1.5 KiB
Markdown
Raw Permalink Normal View History

2018-02-11 23:03:19 +01:00
# NewPipe Website API
This project provides the NewPipe website with data feeds of externally
stored data. Such data is for example the current version of the app, which
can be fetched via the GitHub API.
While web APIs like the GitHub one could be requested directly from the
browser, this has a couple of disadvantages. The most relevant is probably
that issuing requests from our website to GitHub compromises our idea of
improved privacy by hosting websites without any trackers on our own
infrastructure. By requesting the GitHub API from the users' browsers, the
browser will most likely send headers in those requests containing information
on the origin of the requests (so-called `Referer:` header). The only way to
avoid this is to provide the data from the same infrastructure as the main
website, and that's the idea behind this project.
The project is written in Python 3 and uses the
[Tornado framework](http://www.tornadoweb.org) to build a blazing fast, yet
efficient web API following the micro service design pattern. The API fetches
the upstream data, e.g., from GitHub, extracts the relevant bits, and returns
them either as raw string or serialized as JSON.
Furthermore, it is capable of caching the latest data, to on the one hand
reduce the amount of requests (and outgoing traffic) to the upstream APIs, and
on the other hand reduce the response time to a minimum, especially for
subsequent requests. This works really well due to the asynchronous model
Tornado provides.