Étape 1: Étape 1: codage du nuage
Formidable ! Vous l’avez fait à l’étape 1. Ici, nous allons construire le service web auquel notre Arduino Yun enverra les données (POST). L’idée est qu’il va lire les données de notre détecteur de gaz et qui envoient au serveur, donc nous pouvons utiliser ces données comme bon nous semble.
Je ne va pas expliquer la configuration du serveur Web. Dans mon cas, j’utilise un VPS DigitalOcean exécutant une pile LEMP. Afin que cela fonctionne vous devrait accorder une attention particulière aux modules PHP de que votre serveur Web est installé.
Installation de Lumen
Tout d’abord jusqu'à installer une nouvelle installation du cadre micro Lumen sur votre serveur. J’ai ajouté l’installateur de Lumen à l’installateur de package « compositeur ». Donc tout ce que j’ai à faire est :
$ lumen new api
Alternativement, vous pouvez copier Lumen via FTP en téléchargeant ses fichiers sur le site de Lumen.
Ensuite jusqu'à nous devons éditer le fichier « .env ». Modifier les références de connexion correcte pour votre base de données MYSQL, nom d’utilisateur et mot de passe. Cela rendra Lumen en mesure d’accéder à la base de données sur votre serveur.
Important : Vérifiez si Lumen est installé correctement en allant vers le dossier public sur votre serveur. Il doit afficher « Lumen ».
Codage de l’API
J’ai écrit cette partie comme un tutoriel de pâte de copie. Pourquoi ? Parce que si vous pouvez coder, vous obtiendrez ce que cela signifie. Si vous ne pouvez pas code c' est inutile d’expliquer cela. Pourrait-il y avoir une forte demande, que je mettrai à jour en conséquence.
Nous avons choisi Lumen parce que c’est un vraiment petit "framework" (d'où la partie « micro ») et il est vraiment facile à faire une API simple.
Tout d’abord vers le haut. Créez un nouveau fichier de migration afin de créer les tables dans la base de données. Vous pouvez l’appeler quelque chose que vous aimez. Je vais l’appeler « données », en raison d’un manque d’inspiration.
$ php artisan make:migration create_data_table –create=data
Allez dans le dossier « base de données/migrations » et ouvrez le fichier de migration php que vous venez de créer. Modifiez-la pour ressembler à ceci.
<?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration;class CreateData extends Migration { /** * Run the migrations. * * void */ public function up() { Schema::create('data', function (Blueprint $table) { $table->increments('id'); $table->float('pollution'); $table->double('longitude',8,6); $table->double('latitude',8,6); $table->timestamps(); }); } /** * Reverse the migrations. * * void */ public function down() { Schema::drop('data'); } }
Ensuite, nous allons créer un modèle pour la base de données en créant un nouveau fichier dans le dossier « app/modèles ». (Le dossier n’est pas là alors vous devriez vous que trop). Nouveau : remplacer les données par le nom que vous avez choisi.
<?php use Illuminate\Database\Eloquent\Model;class Data extends Model { protected $fillable = ['pollution', 'longitude', 'latitude']; }
Maintenant nous devons créer un contrôleur qui gère la saisie des données. Créez un nouveau fichier dans le dossier « http/app/controllers » appelé {name}controller.php. Le mien s’appelle DataController.php
<?php namespace App\Http\Controllers;use Laravel\Lumen\Routing\Controller as BaseController; use App\Models\Data; use Illuminate\Http\Request;class DataController extends BaseController { public function index(){ $data = Data::all(); return response()->json($data); } public function createData(Request $request){ $find = Data::where('longitude', $request->longitude)->where('latitude', $request->latitude)->get(); if($find->isEmpty()){ $data = Data::create($request->all()); return response()->json($find); }else{ $find = Data::where('longitude', $request->longitude)->where('latitude', $request->latitude)->first(); $update = Data::find($find->id); $update->pollution = $request->pollution; $update->save(); return response()->json($update); } } public function deleteData($id){ $data = Data::find($id); $data->delete(); return response()->json('success'); } public function getCoords($lat, $lon){ $data = Data::whereBetween('longitude', [($lon-0.2), ($lon + 0.2)])->whereBetween('latitude', [($lat - 0.2), ($lat + 0.2)])->get(); return response()->json($data); }}
Dernière étape consiste à mettre à jour le fichier routes.php afin que notre api peut être approchés de l’extérieur. Rendez-vous sur le dossier "app/http" et éditez le fichier « routes.php ». Cela rendra l’api accessible en allant dans « www.domain.tld/api/v1/data ».
$app->group(['prefix' => 'api/v1','namespace' => 'App\Http\Controllers'], function($app) { $app->get('data','DataController $app->get('places/{lat}/{lon}','DataController $app->post('data','DataController $app->delete('data/{id}','DataController
C’est tout ! Vous avez terminé avec votre API.
? >