最小物聯網系統(三)——建立RESTful
資料庫的目的在於儲存資料等等的閒話這裡就不多說了,建立一個RESTful的目的在於產生下面的JSON格式資料,以便於我們在Android、Java、Python、jQuery等語言框架或者平臺上可以呼叫,最主要的是可以直接用Ajax來產生更炫目的效果。
{
id: 1,
temperature: 14,
sensors1: 12,
sensors2: 12,
led1: 0
}
資料庫遷移
這個名字是源自於Ruby On Rails在那時候的印象,不直接使用MySQL的目的在於讓我們可以專注於過程。
建立表
表的概念,類似於在Excel中的表,如果你真實不懂資料庫。 讓我們建立一個athomes的表,為什麼是athomes,因為以前在寫android程式的時候就叫的是athome,忽略掉這些將要的因素吧。
php artisan migrate:make create_athomes_table
開啟 app/database/*create_athomes_table.php這裡的*是由日期和某些東西組成的,修改生成的程式碼為下面。
<!--?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateAthomesTable extends Migration {
public function up()
{
Schema::create('athomes', function(Blueprint $table)
{
$table--->increments('id');
$table->float('temperature');
$table->float('sensors1');
$table->float('sensors2');
$table->boolean('led1');
$table->timestamps();
});
}
public function down()
{
Schema::drop('athomes');
}
}
意思大致就是id是自加的,也就是我們在localhost/athome/{id},當我們建立一個新的資料的時候,會自動加上去,最後一個timestamps批的是時間,會包含建立時間和修改時間。 剩下的temperature,sensors1,sensors2是小數,以及只有真和假的led1。
資料庫遷移
我們只是寫了我們需要的資料的格式而並沒有丟到資料庫裡,
php artisan migrate
這個就是我們執行遷移的命令,如果你用phpmyadmin可以直接開啟檢視,沒有的話,可以。
mysql -uroot -p
use iot;
select * from athomes;
就可以看到我們寫的東西,那麼接下來就是建立RESTful 服務了
建立RESTful
用下面的程式碼實現我們稱之為Athomes控制器的建立
php artisan controller:make AthomesController
就會在app/controllers下面生成下面的程式碼
<!--?php
class AthomesController extends \BaseController {
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store()
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param int $id
* @return Response
*/
public function update($id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return Response
*/
public function destroy($id)
{
//
}
} -->
Laravel Resources
上面的程式碼過於沉重,請讓我用Ctrl+C來帶來點知識吧。。
Verb | Path | Action | Route Name |
---|---|---|---|
GET | /resource | index | resource.index |
GET | /resource/create | create | resource.create |
POST | /resource | store | resource.store |
GET | /resource/{resource} | show | resource.show |
GET | /resource/{resource}/edit | edit | resource.edit |
PUT/PATCH | /resource/{resource} | update | resource.update |
DELETE | /resource/{resource} | destroy | resource.destroy |
所以我們只需要專注於建立create,edit,show,destory,等等。好吧,你可能沒有耐心了,但是在修改這個之前我們需要先在 app/model加個class
<!--?php
class Athomes extends Eloquent {
protected $table = 'athomes';
}
如果你想要的只是控制器Athomes的程式碼的話。。
<?php
class AthomesController extends \BaseController {
/**
* Display a listing of the resource.
*
* @return Response
*/
public $restful=true;
protected $athome;
public function __construct(Athomes $athome)
{
$this--->athome = $athome ;
}
public function index()
{
$maxid=Athomes::all();
return Response::json($maxid);
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
$maxid=Athomes::max('id');
return View::make('athome.create')->with('maxid',$maxid);
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store()
{
// validate
// read more on validation at http://laravel.com/docs/validation
$rules = array(
'led1'=>'required',
'sensors1' => 'required|numeric|Min:-50|Max:80',
'sensors2' => 'required|numeric|Min:-50|Max:80',
'temperature' => 'required|numeric|Min:-50|Max:80'
);
$validator = Validator::make(Input::all(), $rules);
// process the login
if ($validator->fails()) {
return Redirect::to('athome/create')
->withErrors($validator)
->withInput(Input::except('password'));
} else {
// store
$nerd = new Athomes;
$nerd->sensors1 = Input::get('sensors1');
$nerd->sensors2 = Input::get('sensors2');
$nerd->temperature = Input::get('temperature');
$nerd->led1 = Input::get('led1');
$nerd->save();
// redirect
Session::flash('message', 'Successfully created athome!');
return Redirect::to('athome');
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return Response
*/
public function show($id)
{
$myid=Athomes::find($id);
$maxid=Athomes::where('id','=',$id)
->select('id','temperature','sensors1','sensors2','led1')
->get();
return Response::json($maxid);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit($id)
{
// get the nerd
$athome = Athomes::find($id);
// show the edit form and pass the nerd
return View::make('athome.edit')
->with('athome', $athome);
}
/**
* Update the specified resource in storage.
*
* @param int $id
* @return Response
*/
public function update($id)
{
// validate
// read more on validation at http://laravel.com/docs/validation
$rules = array(
'led1'=>'required|',
'sensors1' => 'required|numeric|Min:-50|Max:80',
'sensors2' => 'required|numeric|Min:-50|Max:80',
'temperature' => 'required|numeric|Min:-50|Max:80'
);
$validator = Validator::make(Input::all(), $rules);
// process the login
if ($validator->fails()) {
return Redirect::to('athome/' . $id . '/edit')
->withErrors($validator);
} else {
// store
$nerd = Athomes::find($id);
$nerd->sensors1 = Input::get('sensors1');
$nerd->sensors2 = Input::get('sensors2');
$nerd->temperature = Input::get('temperature');
$nerd->led1 = Input::get('led1');
$nerd->save();
// redirect
Session::flash('message', 'Successfully created athome!');
return Redirect::to('athome');
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return Response
*/
public function destroy($id)
{
// delete
$athome = Athomes::find($id);
$athome->delete();
if(is_null($athome))
{
return Response::json('Todo not found', 404);
}
// redirect
Session::flash('message', 'Successfully deleted the nerd!');
return Redirect::to('athome');
}
}
希望你能讀懂,沒有的話,關注下一節。
相關文章
- 最小物聯網系統(五)——Laravel RESTful模板化LaravelREST
- 最小物聯網系統(四)——詳解Laravel的RESTfulLaravelREST
- 最小物聯網系統——Dashboard
- 最小物聯網系統(二)——RESTful(一)Laravel安裝與資料庫設定RESTLaravel資料庫
- 最小物聯網系統(六)——Ajax打造視覺化視覺化
- 最小物聯網系統(九)——Android客戶端Android客戶端
- 最小物聯網系統(七)——與伺服器通訊伺服器
- 最小物聯網系統設計——給Laravel新增測試Laravel
- 最小物聯網系統(八)——與微控制器通訊
- 物聯網作業系統列表作業系統
- 騰訊物聯網作業系統正式開源,最小體積僅1.8KB作業系統
- 三星要在物聯網領域KO蘋果:4月將公佈物聯網作業系統蘋果作業系統
- 三星4月將公佈物聯網作業系統 要在物聯網領域KO蘋果作業系統蘋果
- 物聯網系統時代:iOS、安卓拜拜?iOS安卓
- 縱論物聯網(六):基於Linux的物聯網作業系統Linux作業系統
- 物聯網資料卡系統原始碼——物聯網技術架構圖原始碼架構
- 01-物聯網專案-物美智慧-系統搭建
- 物聯網應用之 - 智慧搜尋系統
- 物聯網資料卡系統原始碼——物聯網的主要應用領域原始碼
- 當物聯網系統出現故障:使用低質量物聯網資料的風險
- 縱論物聯網(五):除了Linux,還有什麼物聯網作業系統Linux作業系統
- 物聯網作業系統安全性分析作業系統
- AliOS Things物聯網作業系統iOS作業系統
- 物聯網開發系統有什麼作用?
- 物聯網+分析,打造穩定可靠的電網系統
- 水庫雨量、流量實時監測物聯網系統
- MQTT 安全解析:構建可靠的物聯網系統MQQT
- 物聯網作業系統已現中國時機作業系統
- 渝企研發物聯網平臺系統“章魚”
- 想做物聯網路卡系統 是因為不想忍
- 物聯網CEO們,未來三年,物聯網將發生什麼?
- 從裝置聯網走向萬物互聯三大趨勢引領物聯網未來
- 工業物聯網三大風險解析
- 物聯網【專案開發】開源系統開發
- 物聯網時代,智慧家居系統的具體介紹
- 5分鐘課程:物聯網的系統設計
- 工業物聯網智慧儲能系統解決方案
- NB-IOT物聯網系統的安全架構架構