zoukankan      html  css  js  c++  java
  • laravel API开发,使用dingo/api

    1、composer添加 "dingo/api": "1.0.*@dev"

    composer require dingo/api:1.0.x@dev
    

    2、配置文件app.php添加注册

    DingoApiProviderLaravelServiceProvider::class,
    

    3、添加自定义配置(此时会在配置文件中生成api.php)

    php artisan vendor:publish --provider="DingoApiProviderLaravelServiceProvider"
    

    4、测试

    添加路由:

    1 $api->version('v1', function ($api) {
    2         $api->group(['namespace' => 'AppApiControllers'], function ($api) {
    3             $api->post('user/login','AuthController@login');
    4             $api->post('user/register','AuthController@register');
    5             $api->get('lessons', 'LessonsController@index');
    6             $api->get('lessons/{id}', 'LessonsController@show');
    7         });
    8     });

    添加控制器(appApiControllersLessonsController):

    namespace AppApiControllers;
    
    use AppHttpModelLessons;
    use IlluminateHttpRequest;
    
    use AppHttpRequests;
    use AppApiTransformerLessonsTransformer;
    
    
    class LessonsController extends Controller
    {
      
    
        public function show($id)
        {
            $lesson = Lessons::find($id);
            if(!$lesson){
                return $this->response()->errorNotFound("Lesson nt found");
            }
            return $this->response()->item($lesson,new LessonsTransformer());
        }
    }

    添加model(appHttpModelLessons)

     1 namespace AppHttpModel;
     2 
     3 use IlluminateDatabaseEloquentModel;
     4 
     5 /**
     6  * Class Lessons
     7  * @package AppApiModel
     8  */
     9 class Lessons extends Model
    10 {
    11     //
    12 }

    添加自定义的数据传输类(appApiTransformerLessonsTransformer),此类可有可无,在控制器中修改是否调用即可。

     1  namespace AppApiTransformer;
     2     use AppHttpModelLessons;
     3     use LeagueFractalTransformerAbstract;
     4 
     5     class LessonsTransformer extends TransformerAbstract
     6     {
     7         public function transform(Lessons $lesson)
     8         {
     9             return [
    10                 'title' => $lesson['title'],
    11                 'content' => $lesson['body'],
    12                 'is_free' => (boolean)$lesson['free']
    13             ];
    14         }
    15     }

    效果:

    备注:需要的lessons表可以自行添加(字段随意),然后配置数据库连接即可。

  • 相关阅读:
    Pandas基本命令
    python——内建模块instance的学习
    pyhton——logging日志模块的学习
    mongoDB集群的搭建
    goahead(web服务器)分析
    2019-9
    cmake
    mqtt+htttp+websocket
    u-boot中filesize环境变量【转载】
    cppcheck下载及使用
  • 原文地址:https://www.cnblogs.com/winstonsias/p/10193865.html
Copyright © 2011-2022 走看看