my repo for learning APIs
-
https://jsonplaceholder.typicode.com/posts
GET jsonplaceholder.typicode.com/posts
install FastAPI
pip install fastapi
run fastapi https://fastapi.tiangolo.com/deployment/manually/
create an API private thuses an API
https://zoo-animal-api.herokuapp.com/
https://rapidapi.com/unicornapi/api/earth-animals
to install a node version nvm install v0.x.x
npm init
npm install cheerio
( version in tutorial 1.0.0-rc.10 )
npm install express
(version in tutorial 6.17.1 )
npm i axios
(version in tutorial 0.21.4 )
npm i nodemon
change in package.json
"scripts": {
"start": "nodemon index.js"
}
index.js
const PORT = 8000
const express = require('express')
const axios = require('axios')
const cheerio = require('cheerio')
const app = express() // call the library as app
app.listen(PORT, () => console.log(`server is running on PORT ${PORT}`))
then to run program : npm run start
check in browser : http://localhost:8000/
const articles = []
app.get('/news', (req, res) => {
axios.get('https://www.theguardian.com/environment/climate-crisis')
.then((response) => {
const html = response.data
// console.log(html) // raw html
const $ = cheerio.load(html) // allows for elements
// find all a tags that have climate
$('a:contains("climate")', html).each(function () { // callback function
const title = $(this).text()
const url = $(this).attr('href')
articles.push({
title,
url
})
})
res.json(articles)
}).catch((err) => console.log(err))
})
//------------ select specific articles from specific paper
app.get('/news/:newspaperId', async (req, res) => {
// console.log(req.params.newspaperId)
const newspaperId = req.params.newspaperId
const newspaperAddress = newspapers.filter(newspaper => newspaper.name == newspaperId)[0].address
// console.log(newspaperAddress)
const newspaperBase = newspapers.filter(newspaper => newspaper.name == newspaperId)[0].base
axios.get(newspaperAddress)
.then(response => {
const html = response.data
const $ = cheerio.load(html)
const specific_articles = []
$('a:contains("climate")', html).each(function () { // callback function
const title = $(this).text()
const url = $(this).attr('href')
specific_articles.push({
title,
url: newspaperBase + url,
source: newspaperId
})
})
res.json(specific_articles)
}).catch((err) => console.log(err))
})
tutorial had : climatechangeapi.herokuapp.com
climate change API
New + > new web service npm run build