小白分享一个基于laravel的APP接口
IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《小白分享一个基于laravel的APP接口》,聊聊MySQL、PHP、laravel、apache,我们一起来看看吧!
前期准备
原文地址
前言,为什么做以及要做个啥
本人姓小名白,不折不扣编程届小白一名,但是自从大一那会儿接触到编程这件奇妙的事情,就完完全全的陷入的程序的世界。
这不,最近又开始折腾APP了,话说现在开发一款APP真是容易,只用JavaScript和一点点HTML+css技术就可以完成。但是做APP的后台就不一样了。开发了APP,想让读点数据进去,那我们就要去开发个后台了。
laravel框架,是我最喜欢的PHP框架了,没有之一。去年就曾经用laravel写了我的个人网站但粗糙程度让我十分脸红,好了不扯了,让我们直接进入主题——先安装laravel吧!
基础环境配置
具体的步骤直接看文档吧laravel5.2安装
我自己的环境是win10上面安装了wampsrver2.5,但是这里值得好好注意一下,用wampsrver2.5了话,这几个地方要改动一下。关于这个请看我的笔记
工具:
sublime
浏览器:
chrome(要用到的插件
postman)
关于API
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
需要注意的是: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加入如下内容
"require": { "php": ">=5.5.9", "laravel/framework": "5.2.*", "dingo/api": "1.0.*dev", "lucadegasperi/oauth2-server-laravel": "5.1.*" },
然后打开cmd执行
composer update
在
config/app.php中的
providers里添加
AppProvidersOAuthServiceProvider::class, DingoApiProviderLaravelServiceProvider::class, LucaDegasperiOAuth2ServerStorageFluentStorageServiceProvider::class, LucaDegasperiOAuth2ServerOAuth2ServerServiceProvider::class,
在
aliases里添加
'Authorizer' => LucaDegasperiOAuth2ServerFacadesAuthorizer::class,
修改
app/Http/Kernel.php文件里的内容
protected $middleware = [LucaDegasperiOAuth2ServerMiddlewareOAuthExceptionHandlerMiddleware::class, ]; protected $routeMiddleware = [ 'oauth' => LucaDegasperiOAuth2ServerMiddlewareOAuthMiddleware::class, 'oauth-user' => LucaDegasperiOAuth2ServerMiddlewareOAuthUserOwnerMiddleware::class, 'oauth-client' => LucaDegasperiOAuth2ServerMiddlewareOAuthClientOwnerMiddleware::class, 'check-authorization-params' => LucaDegasperiOAuth2ServerMiddlewareCheckAuthCodeRequestMiddleware::class, 'csrf' => AppHttpMiddlewareVerifyCsrfToken::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
修改
configoauth2.php文件
'grant_types' => [ 'password' => [ 'class' => 'LeagueOAuth2ServerGrantPasswordGrant', 'access_token_ttl' => 604800, 'callback' => 'AppHttpControllersAuthPasswordGrantVerifier@verify', ], ],
新建一个服务提供者,在
app/Providers下新建
OAuthServiceProvider.php文件内容如下
namespace AppProviders; use DingoApiAuthAuth; use DingoApiAuthProviderOAuth2; use IlluminateSupportServiceProvider; 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添加相关路由
//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 AppUser(); $user->name="tester"; $user->email="test@test.com"; $user->password = IlluminateSupportFacadesHash::make("password"); $user->save(); }); $api = app('DingoApiRoutingRouter'); //Show user info via restful service. $api->version('v1', ['namespace' => 'AppHttpControllers'], 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内容如下
//BaseController namespace AppHttpControllers; use DingoApiRoutingHelpers; use IlluminateRoutingController; class BaseController extends Controller { use Helpers; } //UsersController namespace AppHttpControllers; use AppUser; use AppHttpControllersController; 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内容如下
namespace AppHttpControllersAuth; use IlluminateSupportFacadesAuth; 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数据
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




以上的所有内容很多是来自于其他大牛的博客,非常的感谢dingo/api、Laravel 5 token based Authentication (OAuth 2.0)、phphub的文章
到这里,我们也就讲完了《小白分享一个基于laravel的APP接口》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于mysql的知识点!

- 上一篇
- 详解Ubuntu下怎么搭建Web框架(flask+mysql)

- 下一篇
- 解决微信表情乱码及mysql编码格式问题
-
- 数据库 · MySQL | 59分钟前 |
- MySQL中文界面设置方法详解
- 356浏览 收藏
-
- 数据库 · MySQL | 10小时前 |
- MySQL安装后如何启动和连接
- 233浏览 收藏
-
- 数据库 · MySQL | 12小时前 |
- MySQL中WHERE与HAVING的区别详解
- 259浏览 收藏
-
- 数据库 · MySQL | 14小时前 |
- MySQL数据备份方法与策略详解
- 112浏览 收藏
-
- 数据库 · MySQL | 16小时前 |
- MySQL中HAVING和WHERE的区别
- 363浏览 收藏
-
- 数据库 · MySQL | 16小时前 |
- MySQL数据归档方法与工具推荐
- 372浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL排序优化与性能提升技巧
- 236浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL缓存优化与参数调优技巧
- 107浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- 三种登录MySQL方法详解教程
- 111浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL如何用update替换字段值方法
- 145浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL缓存优化技巧与设置方法
- 330浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL中文乱码解决方法汇总
- 390浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 511次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 498次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- 千音漫语
- 千音漫语,北京熠声科技倾力打造的智能声音创作助手,提供AI配音、音视频翻译、语音识别、声音克隆等强大功能,助力有声书制作、视频创作、教育培训等领域,官网:https://qianyin123.com
- 86次使用
-
- MiniWork
- MiniWork是一款智能高效的AI工具平台,专为提升工作与学习效率而设计。整合文本处理、图像生成、营销策划及运营管理等多元AI工具,提供精准智能解决方案,让复杂工作简单高效。
- 79次使用
-
- NoCode
- NoCode (nocode.cn)是领先的无代码开发平台,通过拖放、AI对话等简单操作,助您快速创建各类应用、网站与管理系统。无需编程知识,轻松实现个人生活、商业经营、企业管理多场景需求,大幅降低开发门槛,高效低成本。
- 91次使用
-
- 达医智影
- 达医智影,阿里巴巴达摩院医疗AI创新力作。全球率先利用平扫CT实现“一扫多筛”,仅一次CT扫描即可高效识别多种癌症、急症及慢病,为疾病早期发现提供智能、精准的AI影像早筛解决方案。
- 87次使用
-
- 智慧芽Eureka
- 智慧芽Eureka,专为技术创新打造的AI Agent平台。深度理解专利、研发、生物医药、材料、科创等复杂场景,通过专家级AI Agent精准执行任务,智能化工作流解放70%生产力,让您专注核心创新。
- 86次使用
-
- golang MySQL实现对数据库表存储获取操作示例
- 2022-12-22 499浏览
-
- 搞一个自娱自乐的博客(二) 架构搭建
- 2023-02-16 244浏览
-
- B-Tree、B+Tree以及B-link Tree
- 2023-01-19 235浏览
-
- mysql面试题
- 2023-01-17 157浏览
-
- MySQL数据表简单查询
- 2023-01-10 101浏览