加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

基于laravel制作APP接口(API)

发布时间:2020-12-14 20:01:02 所属栏目:大数据 来源:网络整理
导读:前期准备 前言,为什么做以及要做个啥本人姓小名白,不折不扣编程届小白一名,但是自从大一那会儿接触到编程这件奇妙的事情,就完完全全的陷入的程序的世界。 这不,最近又开始折腾APP了,话说现在开发一款APP真是容易,只用JavaScript和一点点HTML+css技术

前期准备

前言,为什么做以及要做个啥 本人姓小名白,不折不扣编程届小白一名,但是自从大一那会儿接触到编程这件奇妙的事情,就完完全全的陷入的程序的世界。

这不,最近又开始折腾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加入如下内容

然后打开cmd执行

在config/app.php中的providers里添加

在aliases里添加

LucaDegasperiOAuth2ServerFacadesAuthorizer::class,

修改app/Http/Kernel.php文件里的内容

LucaDegasperiOAuth2ServerMiddlewareOAuthMiddleware::class,'oauth-user' => LucaDegasperiOAuth2ServerMiddlewareOAuthUserOwnerMiddleware::class,'oauth-client' => LucaDegasperiOAuth2ServerMiddlewareOAuthClientOwnerMiddleware::class,'check-authorization-params' => LucaDegasperiOAuth2ServerMiddlewareCheckAuthCodeRequestMiddleware::class,'csrf' => AppHttpMiddlewareVerifyCsrfToken::class,];

然后执行

在.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

修改appconfigoauth2.php文件

[ 'password' => [ 'class' => 'LeagueOAuth2ServerGrantPasswordGrant','access_token_ttl' => 604800,'callback' => 'AppHttpControllersAuthPasswordGrantVerifier@verify',],

新建一个服务提供者,在app/Providers下新建OAuthServiceProvider.php文件内容如下

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添加相关路由

//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内容如下

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内容如下

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数据

随后的就是去愉快的测试了,这里要测试的API有

新增一个用户

读取所有用户信息

只返回用户id为4的信息

获取access_token

利用token值获得时间,token值正确才能返回正确值

打开PostMan

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读