Laravel使用Dingo扩展包
参考:
安装 Dingo
1 | $ composer require dingo/api |
配置
1 | $ php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider" |
.env
1 | . |
编写调试接口
routes/api.php
1 |
|
v1: GET http://book.test/api/version1
v2: GET Headers 中Accept:application/prs.book.v2+json,
,Accept: application/<API_STANDARDS_TREE>.<API_SUBTYPE>.v2+json
http://book.test/api/version2
Transformers
app/Transformers/BookTransformer.php
1 |
|
继承League\Fractal\TransformerAbstract
类,实现transform方法。
include机制,返回history信息时,返回额外的book信息
include机制的调试
某个用户借阅的所有图书/users/:id/borrowed/histories?include=book
响应:
1 | { |
Dingo路由隐式绑定
routes/api.php1
2
3
4
5
6
7$api->version(‘v1’,[
‘namespace’ => ‘App\Http\Controllers\Api’,
‘middleware’ => [‘serializer:array’, ‘bindings’]
],/function/($api){
$api->get(‘/books/{book}’,’BooksController@show’)
->name(‘api.books.show’);
});
增加bindings中间件。
app/Http/Controllers/Api/BooksController.php
1 |
|
postman中
http://book.test/api/book/:id
分页
app/Http/Controllers/Api/BooksController.php
1 |
|