Blog

Blog

PHODAL

最小物联网系统(四)——详解Laravel的RESTful

最小物联网系统(三)——创建RESTful 如果你没有看懂之前最后的代码,那么我就简要的说说:

首页——index

打开b.phodal.com我们会看到

[{"id":1,"temperature":14,"sensors1":12,"sensors2":12,"led1":1,"created_at":"2013-12-05 12:32:32","updated_at":"2013-12-24 05:50:02"},    {"id":2,"temperature":12,"sensors1":12,"sensors2":12,"led1":1,"created_at":"2013-12-21 16:07:28","updated_at":"2013-12-21 16:07:28"}]
这个就是返回效果,我们只需要在上面写。在AthomesController.php上面的话就是index() 函数里面。 Laravel返回JSON数据是比较简单的

    public function index()
    {
        $maxid=Athomes::all();
        return Response::json($maxid);
    }
其实原本不需要这么麻烦的,不过这样写容易懂。

创建页——create

http://b.phodal.com/athome/create可以看看这里,一个比较简单的页面示例,不过这里用到了模板,我们过后再讲讲这个模板。


    public function create()
    {
        $maxid=Athomes::max('id');
        return View::make('athome.create')->with('maxid',$maxid);
    }
创建的代码似乎太简单了,但是我们忽略了其中 的athome.create这个其实是一个模板,位于

    app/views/athome/create.blade.php
这些就有些不好讲,当然我们先用简单的post来做这个,忽略掉这部分吧。

存储——store

这一部分主要是由create来做的,也就是CRUD中的C


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');
        }
    }
代码似乎有点长,不过这点代码也就是先验证数据再存储。 以sensors1为例

    'sensors1' => 'required|numeric|Min:-50|Max:80',
语句的意思是sensors1是必需的,是一个数字,最小-50,最大80,很容易理解吧。接着的

$validator = Validator::make(Input::all(), $rules);
也就是用于验证输入,当验证成功的时候,进行存储。

更新——update

大致和上面的create类似,由于不同的是上面的nerd是New,而上面是根据id


    $nerd = Athomes::find($id);

删除——destory

如果能理解上面的update下面的delete也能理解了。


    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');
    }

编辑——edit

和create一样用的是模板,


    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);
    }
模板的任务就交给下一篇吧。

展示——show

这个是按照id来展示的, 如

 athome/1

就是列出这个,返回的也是json数据,为了方便其他,当成一个接口。


    public function show($id)
    {
        $myid=Athomes::find($id);
        $maxid=Athomes::where('id','=',$id)
                        ->select('id','temperature','sensors1','sensors2','led1')
                        ->get();
        return Response::json($maxid);
    }

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Engineer, Consultant, Writer, Designer

ThoughtWorks 技术专家

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 最新技术分享

标签