需要注意的是:API有它的具体用途,我们应该清楚它是干啥的。访问API的时候应该输入什么。访问过API过后应该得到什么。
在开始设计API时,我们应该注意这8点。后续的开发计划就围绕着这个进行了。
1.Restful设计原则
2.API的命名
3.API的安全性
4.API返回数据
5.图片的处理
6.返回的提示信息
7.在线API测试文档
8.在app启动时,调用一个初始化API获取必要的信息
用laravel开发API
就在我上愁着要不要从零开始学习的时候,找到了这个插件dingo/api那么现在就来安装吧!
首先一定是下载的没错
在新安装好的laravel的composer.json加入如下内容
然后打开cmd执行
composer update
在config/app.php中的providers里添加
App\\Providers\\OAuthServiceProvider::class,
Dingo\\Api\\Provider\\LaravelServiceProvider::class,
LucaDegasperi\\OAuth2Server\\Storage\\FluentStorageServiceProvider::class,
LucaDegasperi\\OAuth2Server\\OAuth2ServerServiceProvider::class,
在aliases里添加
1
|
'Authorizer' => LucaDegasperi\\OAuth2Server\\Facades\\Authorizer:: class ,
|
修改app/Http/Kernel.php文件里的内容
1
2
3
4
5
6
7
8
9
|
protected $middleware = [\\LucaDegasperi\\OAuth2Server\\Middleware\\OAuthExceptionHandlerMiddleware:: class ,
];
protected $routeMiddleware = [
'oauth' => \\LucaDegasperi\\OAuth2Server\\Middleware\\OAuthMiddleware:: class ,
'oauth-user' => \\LucaDegasperi\\OAuth2Server\\Middleware\\OAuthUserOwnerMiddleware:: class ,
'oauth-client' => \\LucaDegasperi\\OAuth2Server\\Middleware\\OAuthClientOwnerMiddleware:: class ,
'check-authorization-params' => \\LucaDegasperi\\OAuth2Server\\Middleware\\CheckAuthCodeRequestMiddleware:: class ,
'csrf' => \\App\\Http\\Middleware\\VerifyCsrfToken:: class ,
];
|
然后执行
php artisan vendor:publish
php artisan migrate
在.env文件里添加这些配置
API_STANDARDS_TREE=x
API_SUBTYPE=rest
API_NAME=REST
API_PREFIX=api
API_VERSION=v1
API_CONDITIONAL_REQUEST=true
API_STRICT=false
API_DEBUG=true
API_DEFAULT_FORMAT=json
修改app\\config\\oauth2.php文件
1
2
3
4
5
6
7
|
'grant_types' => [
'password' => [
'class' => 'League\\OAuth2\\Server\\Grant\\PasswordGrant' ,
'access_token_ttl' => 604800,
'callback' => '\\App\\Http\\Controllers\\Auth\\PasswordGrantVerifier@verify' ,
],
],
|
新建一个服务提供者,在app/Providers下新建OAuthServiceProvider.php文件内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
namespace App\\Providers;
use Dingo\\Api\\Auth\\Auth;
use Dingo\\Api\\Auth\\Provider\\OAuth2;
use Illuminate\\Support\\ServiceProvider;
class OAuthServiceProvider extends ServiceProvider
{
public function boot()
{
$this ->app[Auth:: class ]->extend( 'oauth' , function ( $app ) {
$provider = new OAuth2( $app [ 'oauth2-server.authorizer' ]->getChecker());
$provider ->setUserResolver( function ( $id ) {
// Logic to return a user by their ID.
});
$provider ->setClientResolver( function ( $id ) {
// Logic to return a client by their ID.
});
return $provider ;
});
}
public function register()
{
//
}
}
|
然后打开routes.php添加相关路由
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
//Get access_token
Route::post( 'oauth/access_token' , function () {
return Response::json(Authorizer::issueAccessToken());
});
//Create a test user, you don't need this if you already have.
Route::get( '/register' , function (){
$user = new App\\User();
$user ->name= "tester" ;
$user ->email= "test@test.com" ;
$user ->password = \\Illuminate\\Support\\Facades\\Hash::make( "password" );
$user ->save();
});
$api = app( 'Dingo\\Api\\Routing\\Router' );
//Show user info via restful service.
$api ->version( 'v1' , [ 'namespace' => 'App\\Http\\Controllers' ], function ( $api ) {
$api ->get( 'users' , 'UsersController@index' );
$api ->get( 'users/{id}' , 'UsersController@show' );
});
//Just a test with auth check.
$api ->version( 'v1' , [ 'middleware' => 'api.auth' ] , function ( $api ) {
$api ->get( 'time' , function () {
return [ 'now' => microtime(), 'date' => date ( 'Y-M-D' ,time())];
});
});
|
分别创建BaseController.php和UsersController.php内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
//BaseController
namespace App\\Http\\Controllers;
use Dingo\\Api\\Routing\\Helpers;
use Illuminate\\Routing\\Controller;
class BaseController extends Controller
{
use Helpers;
}
//UsersController
namespace App\\Http\\Controllers;
use App\\User;
use App\\Http\\Controllers\\Controller;
class UsersController extends BaseController
{
public function index()
{
return User::all();
}
public function show( $id )
{
$user = User::findOrFail( $id );
// 数组形式
return $this ->response-> array ( $user ->toArray());
}
}
|
随后在app/Http/Controllers/Auth/下创建PasswordGrantVerifier.php内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
namespace App\\Http\\Controllers\\Auth;
use Illuminate\\Support\\Facades\\Auth;
class PasswordGrantVerifier
{
public function verify( $username , $password )
{
$credentials = [
'email' => $username ,
'password' => $password ,
];
if (Auth::once( $credentials )) {
return Auth::user()->id;
}
return false;
}
}
|
打开数据库的oauth_client表新增一条client数据
1
|
INSERT INTO 'oauth_clients' ( 'id' , 'secret' , 'name' , 'created_at' , 'updated_at' ) VALUES ( '1' , '2' , 'Main website' , '2016–03–13 23:00:00' , '0000–00–00 00:00:00' );
|
随后的就是去愉快的测试了,这里要测试的API有
新增一个用户
http://localhost/register
读取所有用户信息
http://localhost/api/users
只返回用户id为4的信息
http://localhost/api/users/4
获取access_token
http://localhost/oauth/access_token
利用token值获得时间,token值正确才能返回正确值
http://localhost/api/time
打开PostMan
以上就是详解Laravel制作API接口的详细内容,更多关于Laravel制作API接口的资料请关注快网idc其它相关文章!
原文链接:https://www.cnblogs.com/a609251438/p/13020906.html
相关文章
- 个人网站服务器域名解析设置指南:从购买到绑定全流程 2025-06-10
- 个人网站搭建:如何挑选具有弹性扩展能力的服务器? 2025-06-10
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
-
2025-05-25 86
-
2025-05-25 55
-
2025-05-29 64
-
2025-05-25 72
-
2025-06-04 65