Paso 1: Paso 1: codificación de la nube
¡ Excelente! Has hecho al paso 1. Aquí estamos construyendo el servicio web para que nuestro Arduino Yun va a enviar los datos (POST). La idea es que lea los datos de nuestro sensor de gas y envía al servidor para que podamos usar los datos como mejor nos parezca.
No se explicar la configuración del servidor Web. En mi caso estoy usando un VPS DigitalOcean ejecutar una pila LEMP. Para conseguir que esto funcione debe prestar especial atención a los módulos PHP que haya instalado el servidor Web.
Instalación de luz
Hasta instalar una instalación nueva del marco micro Lumen en su servidor. He añadido al instalador de luz para el instalador del paquete "compositor". Así que todo lo que tengo que hacer es:
$ lumen new api
Alternativamente puede copiar Lumen a través de FTP mediante la descarga de sus archivos en la Web de Lumen.
Continuación hasta tenemos que editar el archivo ".env". Editar las credenciales de inicio de sesión correcto para su base de datos MYSQL, nombre de usuario y contraseña. Esto hará que la luz capaz de acceder a la base de datos en el servidor.
Importante: Compruebe si la luz está correctamente instalada por ir a la carpeta pública en el servidor. Debe mostrar "Lumen".
Codificación de la API
Escribí esta parte como un tutorial de pasta de copia. ¿Por qué? Porque si se puede codificar, obtendrás lo que todo significa. Si no código de que no sirve para explicar esto. Podría haber una gran demanda a actualizarlo en consecuencia.
Elegimos la luz porque es un marco muy pequeño (por lo tanto, la parte de "micro") y es realmente fácil hacer una API simple.
Primero para arriba. Crear un nuevo archivo de migración para crear las tablas en la base de datos. Se puede llamar cualquier cosa que te gusta. Lo llamaré "datos", debido a la falta de inspiración.
$ php artisan make:migration create_data_table –create=data
Ir a la carpeta "base de datos y migraciones" y abra el archivo php de migración que acaba de crear. Edítelo para parecerse a esto.
<?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'); } }
A continuación vamos a crear un modelo para la base de datos creando un nuevo archivo en la carpeta "app/models". (La carpeta no está allí por lo debe hacer también). Otra vez: reemplazar los datos por el nombre que hayas elegido.
<?php use Illuminate\Database\Eloquent\Model;class Data extends Model { protected $fillable = ['pollution', 'longitude', 'latitude']; }
Ahora tenemos que crear un controlador que gestiona la entrada de datos. Crear un nuevo archivo en la carpeta "controladores de http de la aplicación" llamada {name}controller.php. Mina se llama 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); }}
Último paso es actualizar el archivo routes.php para que nuestra api puede ser abordado desde el exterior. Dirígete a la carpeta "app/http" y editar el archivo "routes.php". Esto hará que la api accesible por ir a "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
Eso es todo! Termine con su API.
? >