• 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表可以自行添加(字段随意),然后配置数据库连接即可。

  • 相关阅读:
    Android之遍历SD卡所有文件显示在ListView
    Android之ViewPager
    控制ViewPager的切换速度
    Android中显示sd卡的图片和视频
    java中主线程等待所有子线程结束
    Android之ViewFlipper实现图片切换
    Android闹钟服务详解
    Gradle基本操作入手
    设计模式
    【CSON原创】 基于HTML5的小球物理测试系统
  • 原文地址:https://www.cnblogs.com/winstonsias/p/10193865.html
Copyright © 2020-2023  润新知