laravel dingo/api 笔记

这篇博客记录了使用Dingo API扩展在Laravel中开发API的过程。作者参考了Dingo API的GitHub源码及laravel-china的中文文档,并提到Dingo API与其他两个技术的结合使用。博客提到了fractal的使用,并简要概述了安装步骤。
摘要由CSDN通过智能技术生成

使用 Laravel 开发 API,参考了网上一些资料,laravel 默认已经支持了 API 开发,但是因为都没有了解过,打算尝试使用 Dingo API

github 地址:
https://github.com/dingo/api

laravel-china 中文文档:
https://laravel-china.org/docs/dingo-api/2.0.0

文档写的非常详细,翻译的也非常好,但是需要仔细品读,另外 Dingo API 中使用到了其他两个技术,也需要了解下。之前已经写过笔记了,可参考:
fractal - https://blog.csdn.net/beyond__devil/article/details/83870176

jwt-auth - https://blog.csdn.net/beyond__devil/article/details/83827075

这里简单挑几个重点写下:
1.安装

		composer require dingo/api
发布配置
		php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"
 
		Facades
			Dingo\Api\Facade\API
			Dingo\Api\Facade\Route
 
2.配置信息
 
3.创建端点(在 API 中,路由一般叫做端点)
		1)引用 Dingo API
			$api = app('Dingo\Api\Routing\Router');
 
		2)设置版本分组
 
			// 单个分组
			$api->version('v1', function($api){
   
 
			})
 
			// 多个分组
			$api->version(['v1', 'v2'], function($api){
   
 
			})
 
			// 第二个参数,还可以传递一个 『属性数组』
			$api->version(['v1', 'v2'], ['middleware' => 'foo'], function($api){
   
 
			})
			注意:
				属性数组,是旧版的 Laravel,5.7 版本有些可能不支持
 
			// 其他的和 laravel 的路由没有太大的区分(旧版,新版链式调用不支持)
			$api->version('v1', function($api){
   
				$api->group(['middleware' => 'bar'], function($api){
   
					...
				});
			})
 
		3)创建端点(之前大概看了点源码,忘记了,下面是之前笔记的)
			group() - 路由分组
			domain() - 子域名路由
			namespace() - 命名空间
			prefix() - 前缀
			name() - 命名前缀,是 as 的别名
			as() - 命名前缀
			middle() - 中间件
			where() - 参数的正则约束
 
			/*
				5.7 版本,可以使用这些方法,之前的版本,没有这些方法,使用的是:
					group(['prefix' => '', 'namespace' => '', ...], function(){
 
					});
			 */
 
		4)命名路由 & 生成路由
			$api->get('users/{id}', ['as' => 'users.index', 'uses' => 'Api\V1\UserController@show']);
 
			app('Dingo\Api\Routing\UrlGenerator')->version('v1')->route('users.index');
 
		5)命令行中查看路由
			php artisan api::routes
 
		注意:
			Laravel 5.7版本,routes/api.php 默认就具备中间件,我们需考虑使用 'Dingo API' 还是 'Laravel 系统默认'
 
			app/Providers/RouteServiceProvider.php 
		        Route::prefix('api')
		             ->middleware('api')
		             ->namespace($this->namespace)
		             ->group(base_path('routes/api.php'));
 
		    注意:
		    	如果采用 Ding API,我们可能得取消这里默认的 prefix、middleware、namespace
 
 
4.响应
		响应生成器,需要使用 'Dingo\Api\Routing\Helpers' trait。我们的 API 控制器基本都要使用它,所以创建一个 『基类控制器』
			php artisan make:controller Api/Controller
 
			<?php
 
			namespace App\Http\Controllers\Api;
 
			use Illuminate\Http\Request;
			use Dingo\Api\Routing\Helpers;
			use App\Http\Controllers\Controller as BaseController;
 
			class Controller extends BaseController
			{
   
			    use Helpers;
			}
 
		关于响应生成器,文档写的很详细,上次可能看了下源码,总结了下,基本和文档一致。	
		参考源码:Dingo\Api\Http\Response\Factory
 
			1)响应数组
				$user = User::findOrFail($id);
				$this-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值