美文网首页
Laravel 统一API设计

Laravel 统一API设计

作者: 甘伍觉莫 | 来源:发表于2017-11-24 17:51 被阅读203次

    最近要写一套系统接口,发现公司里写Java的同事写的接口提供的都是统一个请求地址,因为以前没有写过接口,感觉挺有意思的.所以我自己写的这套系统也通过Laravel实现了这一方法.

    以下是实现的代码, 在routes.php里面定义这样的路由:

    Route::post('/api.api', function(){
        $post = Request::instance()->getContent();   //获取数据流,laravel方法
        try{
            $post = json_decode($post, true);   //将JSON字符串解码为数组
            //判断$post['data']是否存在
            $post['data'] = empty($post['data']) ? [] : $post['data'];
            //将请求数据分发到控制器操作
            return App::make('App\Http\Controllers\Api\\'.$post['action'].'Controller')->$post['method']($post['data']);
        }catch (Exception $e){
            return ['code' => 1, 'description' => $e->getMessage()];
        }
    });
    

    这样,请求接口的时候就可以通过传递不同的参数,调用不同的控制器和方法.
    比如我们在app\Http\Controllers\Api 有一个TestController.php, 其中有一个test方法:

    class TestController extends Controller
    {
        public function test($data){
            return ['code' => 0, 'msg' => 'success'];
        }
    }
    

    这样,我们可以通过请求localhost/api.api,传入一下参数(json字符串)调用这个接口:

    {
        "action": "test",
        "method":"test",
        "data":{
      
        }
    }
    

    得到返回数据:

    {
      "code": 0,
      "msg": "success"
    }
    

    这样的设计,可以通过传入不同的参数实现调用不同的接口,简化了后台接口路由的定义.

    相关文章

      网友评论

          本文标题:Laravel 统一API设计

          本文链接:https://www.haomeiwen.com/subject/ntmfbxtx.html