DENEUVILLE Ludovic (sur la base des cours de Rémi Pépin)
ludovic.deneuville@ensai.fr
Il y a pas longtemps, dans une galaxie pas vraiment lointaine ...
Site de e-commerce
Termes assez vaste qui recouvre :
Pourtant tout le monde utilise les données twitter !
Comment font-ils ?
Problèmes
Comme un site web, mais pour les machines 🤖
Site de e-commerce
Vous rentrez dans un taxi et demandez d'aller chez Ludovic Deneuville
Deux options :
Protocole de communication client-serveur développé pour le World Wide Web
N'est pas le seul FTP, SMTP, IRC ...
Il existe des protocoles non client-serveur : BitTorrent
Demander une page web via votre navigateur crée une requête HTTP
Pas de corps
http://web-services.domensai.ecole/attack
Un outil : un client HTTP
requests
import requests
# Construction de la requête
url = "https://data.rennesmetropole.fr/api/records/1.0/search/"
parametres = {"dataset": "etat-du-trafic-en-temps-reel", "rows": 2}
# Lancement de la requête
res = requests.get(url=url, params=parametres)
# Affichage du résultat
print(res.json())
print("\nNombre de lignes : ", res.json()["parameters"]["rows"])
import json
import requests
url = "https://anapioficeandfire.com/api/"
end_point = "characters"
parametres = {"gender": "Female", "isAlive": True, "culture": "Braavosi"}
response = requests.get(url=url + end_point, params=parametres)
# Teste si le serveur a répondu
if response.status_code != 200:
raise Exception(
"Cannot reach (HTTP {}): {}".format(response.status_code, response.text)
)
print(json.dumps(response.json()))
def delete_all_rules(rules):
if rules is None or "data" not in rules:
return None
ids = list(map(lambda rule: rule["id"], rules["data"]))
payload = {"delete": {"ids": ids}}
response = requests.post(
"https://api.twitter.com/2/tweets/search/stream/rules",
headers=bearer_oauth(),
json=payload
)
if response.status_code != 200:
raise Exception(
"Cannot delete rules (HTTP {}): {}".format(
response.status_code, response.text
)
)
print(json.dumps(response.json()))
res.json()
retourne un dictionnaireget()
peux devenir post()
, put()
, etc.
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)