Air Quality mäta med REST Api (1 / 5 steg)
Steg 1: Steg 1: kodning molnet
Stor! Du har gjort det till steg 1. Här kommer vi att bygga webbtjänsten som våra Arduino Yun kommer att skicka (POST) data. Tanken är att det kommer att läsa data från gas sensor och skicka det till servern så att vi kan använda dessa data som vi tycker passar.
Jag kommer inte att förklara installationen av webbservern. I mitt fall använder jag en DigitalOcean VPS kör en LEMP stack. För att få detta att fungera du bör var uppmärksam på din webbserver har installerat PHP-moduler.
Installera Lumen
Först upp installera en ny installation av Lumen micro ramen på din server. Jag har lagt till Lumen installer package installer "kompositör". Så allt jag har att göra är:
$ lumen nya api
Alternativt kan du kopiera Lumen via FTP genom att ladda ner det är filer på webbplatsen Lumen.
Nästa har upp vi att redigera filen ".env". Redigera korrekt inloggningsuppgifter för MYSQL-databasen, användarnamn och lösenord. Det kommer att kunna komma åt databasen på servern Lumen.
Viktigt: Kontrollera om Lumen har installerats korrekt genom att gå till den delade mappen på servern. Den bör Visa "Lumen".
Kodning av API
Jag skrev denna del som en kopia klistra handledning. Varför? Eftersom om du kan koden, du får vad det betyder. Om du inte kan koden det är ingen idé att förklara detta. Det kan finnas en stor efterfrågan som jag ska uppdatera det följaktligen.
Vi valde Lumen eftersom det är en riktigt liten ram (därav den "micro" delen) och det är verkligen lätt att göra ett enkelt API.
Först upp. Skapa en ny migreringsfil så skapa tabeller i databasen. Du kan kalla det vad du vill. Jag kallar det "data", brist på inspiration.
$ php hantverkare gör: migration create_data_table – skapa = data
Gå till mappen "databas/flyttningar" och öppna filen migration php du har just skapat. Redigera den för att likna detta.
<? php använder Illuminate\Database\Schema\Blueprint;
Använd Illuminate\Database\Migrations\Migration;
klassen CreateData utökar Migration
{
/**
* Kör flyttningarna.
*
* void
*/
offentlig funktion up()
{
Schema::Create ("data", funktion (Blueprint $table) {
$table -> increments('id');
$table -> float('pollution');
$table -> double('longitude',8,6);
$table -> double('latitude',8,6);
$table -> timestamps();
});
}
/**
* Återför flyttningarna.
*
* void
*/
offentlig funktion down()
{
Schema::drop('data');
}
}
Nästa ska vi skapa en modell för databasen genom att skapa en ny fil i mappen "app/models". (Mappen inte där så du bör göra det också). Återigen: ersätta data vid namn du har valt.
<? php använder Illuminate\Database\Eloquent\Model;
klassen Data utökar modellen {
skyddade $fillable = ["förorening", 'longitud', 'lat.'];
}
Nu måste vi skapa en styrenhet som hanterar inmatning av data. Skapa en ny fil i mappen "app/http/controllers" kallas {name}controller.php. Min heter DataController.php
<? php namnområdet App\Http\Controllers;
använda Laravel\Lumen\Routing\Controller som BaseController;
Använd App\Models\Data;
Använd Illuminate\Http\Request;
klassen DataController utökar BaseController
{
offentlig funktion index() {
$data = Data::all();
återgå response() -> json($data);
}
offentlig funktion createData (begäran $request) {
$find = Data::where ('longitud', $request -> longitud) -> var ('frihet', $request -> latitude) -> get();
om ($find -> isEmpty()) {
$data = Data::create ($request -> all());
återgå response() -> json($find);
} annat {
$find = Data::where ('longitud', $request -> longitud) -> var ('frihet', $request -> latitude) -> first();
$update = Data::find ($find -> id);
$update -> föroreningar = $request -> föroreningar.
$update -> save();
återgå response() -> json($update);
}
}
offentlig funktion deleteData($id) {
$data = Data::find($id);
$data -> delete();
återgå response() -> json('success');
}
offentlig funktion getCoords ($lat, $lon) {
$data = Data::whereBetween ('longitud', [($lon-0.2), ($lon + 0,2)]) -> whereBetween ('frihet', [($lat - 0,2), ($lat + 0,2)]) -> get();
återgå response() -> json($data);
}
}
Sista steget är att uppdatera filen routes.php så att våra api kan ses från utsidan. Chef över mappen "app/http" och redigera filen "routes.php". Detta kommer att göra api tillgängligt genom att gå till "www.domain.tld/api/v1/data".
$app -> grupp (['prefix' = > ' api/v1', 'namnområdet' = > 'App\Http\Controllers'], function($app)
{
$app -> get ('data','DataController
$app -> get ("förlägger / {lat} / {lon} ',' DataController
$app -> post ('data','DataController
$app -> ta bort ("data / {id} ',' DataController
});
Det är det! Du är klar med din API.
? >