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

原文地址:https://www.cnblogs.com/winstonsias/p/10193865.html