Skip to content

JulienPalard/exercise-flask-restos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

Exercice Flask

Créez une API Flask

Avec juste deux routes pour commencer :

  • /api/
  • /api/restos/

La route /api/

Cette route doit représenter "la home" de l'API, c'est à dire donner les informations intéressantes à propos de l'API, au strict minimum un lien vers /api/restos

{
    "restos": "/api/restos"
}

Pour aller plus loin regarder json-home.

La route /api/restos

Cette route doit accepter un argument q pour chercher, par exemple, un restaurant par ville :

GET /api/restos/?q=Tignes

Le document renvoyer doit être un objet json contenant au minimum un attribut items contenant des restaurants sous la forme d'un nœud OSM :

{
    "changeset": 2159133,
    "id": 468716078,
    "lat": 45.4674066,
    "lon": 6.9026969,
    "tags": {
        "amenity": "restaurant",
        "name": "Le Chardonnet"
    },
    "timestamp": "2009-08-15T23:34:57Z",
    "type": "node",
    "uid": 87991,
    "user": "andygates",
    "version": 1
    }
}

Requêter OSM

Pour faire des requêtes sur OSM vous pouvez utiliser overpass.

Pour tester vos requêtes, utilisez overpass turbo, par exemple, pour trouver les restaurants à Tignes, utilisez cette requête :

=> https://overpass-turbo.eu/s/156z

OSM est un projet libre, les serveurs overpass sont hébergés par la communauté, et les requêtes parfois gourmandes, nous allons donc réduire au strict minimum le nombre de requêtes effectuées en les cachant au maximum, dès le début du projet.

Le langage overpass vous permet de préciser que vous souhaitez une réponse JSON, ainsi, en utilisant la bibliothèque requests de Python, il est possible de faire une requête smplement via :

response = requests.post(
    "https://lz4.overpass-api.de/api/interpreter",
    f"""[out:json];area[name="{city}"];node["amenity"="restaurant"](area);out meta;""".encode("UTF-8")
)

Mais dans un premier temps, je vous ai fait la requête pour Tignes et l'ai stockée ici : https://mdk.fr/x/tignes.json vous pouvez donc l'utiliser dans votre code durant la phase de développement (pour réduire au maximum nos appels aux API overpass).

Le HTML / JS / CSS

Il y a deux écoles :

  • Soit vous le faite dans Flask, avec des templates en Jinja2 dans le dossier templates/ et vos css et js dans le dossier static/.
  • Soit vous le faite complètement à part, avec vos outils habituels, de toute façons le front est entièrement décorrélé du back.

About

Un exercice Flask avec du OSM et des restos.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published