Laravel RESTful快速部署指南(二)

继上篇Laravel RESTful快速部署指南(一) 之后,让我们继续完成一个简单的Laravel RESTful。

开发环境:Windows+XAMPP

代码下载: https://github.com/gmszone/learingphp

编辑器: Sublime Text3(Crack)

转载保留: (转载自Phodal's Blog Phodal's CSDN)


显示资源show()->GET

也就是show函数负责的这部分,生成的控制器里面是这样描述的。
	/**
	 * Display the specified resource.
	 *
	 * @param  int  $id
	 * @return Response
	 */

那么我们只需要指对我们需要的id,生成对应的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);
	}
用上面的find($id)可以生成对对应id的值。但是有时候我们并不需要所有的数据,比如created_at
{"id":1,"temperature":12,"sensors1":12,"sensors2":23,"led1":0,"created_at":"2013-11-11 08:42:24","updated_at":"2013-11-11 08:42:24"}
于是我们就需要用where和select来处理这些数据,使之变成,
{
id: 1,
temperature: 12,
sensors1: 12,
sensors2: 23,
led1: 0,
created_at: "2013-11-11 08:42:24",
updated_at: "2013-11-11 08:42:24"
}

用curl来测试一下
curl http://localhost/learingphp/public/athome/1


构建Create()->POST

这里就需要的是我们来对数据进行,处理了。在运行Post的时候,首先我们要制定规则,用来验证用的。
		$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);
这部分参考了来自于这篇博文所写的  http://scotch.io/tutorials/simple-laravel-crud-with-resource-controllers 
验证通过再存储这些数据,完整的store函数如下
        public function store()
	{
		$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);

		if ($validator->fails()) {
			return Redirect::to('athome/create')
				->withErrors($validator);
		} 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();
		}
	}


测试POST

这里用的是python,网上找的车轮子,因为我试了很多遍curl,最后还是失败了。json数据为
{"temperature":19,"sensors1":22,"sensors2":7.5,"led1":1}
程序如下,,网上copy的。
import urllib  
import urllib2  
  
def post(url, data):  
    req = urllib2.Request(url)  
    data = urllib.urlencode(data)  
    #enable cookie  
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())  
    response = opener.open(req, data)  
    return response.read()  
  
def main():  
    posturl = "http://localhost/learingphp/public/athome"  
    data = {"temperature":19,"sensors1":22,"sensors2":7.5,"led1":1}
    print post(posturl, data)  
  
if __name__ == '__main__':  
    main()  
运行结果如下所示:
Laravel RESTful快速部署指南(二)_第1张图片

删除destory()->DELETE

删除就比较简单了,删除指定id的就行了。。目测是这样子,但是id就变得不连续了,这个在后期写ajax的时候会很吃力的节奏。
	public function destroy($id)
	{
		// delete
		$athome = Athomes::find($id);
		$athome->delete();
       }
用curl来测试一下,DELETE,那就DELETE id=1吧
curl -X DELETE http://localhost/learingphp/public/athome/1
再GET一下,就没有了、

Laravel RESTful快速部署指南(二)_第2张图片

更新update()->PUT

代码如下,这里就不再多解释了。
        public function update($id)
	{
		$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);

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



你可能感兴趣的:(json,api,REST,laravel,laravel,laravel,laravel,laravel,Restful)