Créé en 2021 et modifié le 17 Aug 2022

Créé en 2021 et modifié le 17 Aug 2022

Créé en 2021 et modifié le 17 Aug 2022

Réaliser son API avec des attributs dans l’URI

 

Intro

Livrable gitlab : finder/mission00/…

 

Partie 1  – Hôtel Amor

La base de données

route chambre – méthode GET,  URI  /chambre/{id}

  • Choisir et envoyer un id de chambre au serveur SLIM.
  • Le serveur renverra la description de la chambre grâce à une fonction et un appel à la base de données.

Exemple de code client

  $( document ).ready(function() {

  $('#btn-new-liste').click(function(){ 
    let idx=$('#idx').val();
      $.ajax({ 
      type: "GET",
      url: "http://localhost/got/serveur/personnage/"+idx,
      success: function(data){  
        $("#result").html(data);
      }
    });
  });
 });

Exemple d’ajout de code index.php

$app->get('/personnage/{id}', function(Request $request, Response $response){
	$id = $request->getAttribute('id');
       return getPersonnage($id);
});
function connexion()
{
   return $dbh = new PDO("mysql:host=localhost;dbname=patisserie", 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
}
function getPersonnage($id)
{
	$sql = "SELECT * FROM gateau";
	try{
		$dbh=connexion();
		$statement = $dbh->prepare($sql);
		$statement->execute();
		 $result = $statement->fetchAll(PDO::FETCH_CLASS); 
                 return json_encode($result, JSON_PRETTY_PRINT);
	} catch(PDOException $e){
		return '{"error":'.$e->getMessage().'}';
	}
}

 

Partie 2  –  Hôtel Byzance

La base de données

cd C:\Program Files\PostgreSQL\bin
pg_ctl -D "C:\Program Files\PostgreSQL\data" start
  • Connectez vous grâce à  adminer à postgresql. Login postgres, mdp postgres, port 5432

 

route chambre – méthode GET,  URI  /chambre/{id}

  • Installer le module pg mysql pour pouvoir accéder à une base de données.
npm install pg
  • Choisir et envoyer un id de chambre au serveur.
  • Le serveur renverra la description de la chambre grâce à une fonction et un appel à la base de données.

Exemple de code serveur

A ajouter au code précédent

var pg = require('pg');
/*var connection = pg.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '',
  database : 'patisserie'
});*/

var connectionString = "pg://postgres:[email protected]:5432/patisserie";
var connection= new pg.Client(connectionString);
connection.connect(); 

app.get('/personnage/:nono',function(req,res,next){ 
  nono= req.params.nono; console.log( nono); 
  connection.query('SELECT * from gateau', function (error, results, fields) {
       if (error) throw error; res.json({ message : results}); }); 
})

 

Partie 3  –  Hôtel Caraïbes

La base de données

Réaliser la base de données de l’Hotel Caraïbes  sous MariaDB.

  •  Décompresser le répertoire du dépot https://github.com/cherryclass/sqlite. Il contient sqlite, adminer sans mot de passe et une base mabase.db.
  • Copier tous les fichiers du répertoire dans votre répertoire de projet flask
  • Connectez vous à la base de données par défaut mabase.db grâce à adminernopass.php
  • Créer une base de données en lançant sqlite3.exe en console et accéder à celle ci en ligne de commande. On pourra y accéder grâce à adminernopass.php par la suite
  • Observer et adapter le code en console de l’image suivante. Le fichier de la base n’est pas crée tant qu’il n’y a pas de table.

sqlite2

  • Le fichier de la base doit absolument être dans le répertoire qui contient index.py

route chambre – méthode GET,  URI  /chambre/{id}

  • Installer le module flask-mysql pour pouvoir accéder à une base de données.
  • Choisir et envoyer un id de chambre au serveur.
  • Le serveur renverra la description de la chambre grâce à une fonction et un appel à la base de données.

Exemple de code serveur (obsolete, avec sqlite)

from flask import Flask
from flask import request
from flask import jsonify
import json
import sqlite3 as sql
app = Flask(__name__)
CORS(app)

@app.route('/personnage/<nom>', methods=['GET']) 
def ma_fonction(nom): 
  print(nom)
  con = sql.connect("mabase.db")
  con.row_factory = sql.Row
  cur = con.cursor()
  cur.execute("select * from user")
  data=[]
  rows = cur.fetchall(); 
  for row in rows:
    data.append(list(row))

  if len(data) != 0:
    return jsonify(data)
  else:
    return json.dumps({'error':str(data[0])})
  conn.close()
if __name__ == '__main__':
    app.run(debug=True)