【微信小程序】安装DingoApi开发小程序api
1.安装
composer require dingo/api
2.发布配置:
php artisan vendor:publish
选择DingoApi发布.
3.向.env文件添加配置
(1)项目环境
API_STANDARDS_TREE = prs
x:本地开发私有环境
prs:未对外公布,单页应用
vnd:开放所有用户
(2)项目简称
API_SUBTYPE=test
(3)前缀
API_PREFIX=api
(4)api版本
API_VERSION=v1
(5)测试环境,显示错误信息
API_DEBUG=true
3.接管路由
$api = app('Dingo\Api\Routing\Router');
/*
* 1.确定namespace.
* 2.启动数组序列化器
* 3.开启模型绑定
*/
$api->version('v1',[
'namespace' => 'App\Http\Controllers\Api',
'middleware' => ['serializer:array','bindings']
],function ($api){
/*
* 游客可以访问的接口
* 1.限制接口访问次数
*
*/
$api->group([
'middleware' => 'api.throttle',
'limit' => config('api.rate_limits.access.limit'),
'expires' => config('api.rate_limits.access.expires'),
],function($api){
//这里写不需要验证的接口
$api->(……)->name(……);
。
。
。
/*
* 需要验证的接口
* 1.授权才能访问
*/
$api->group([
'middleware' => 'api.auth',
],function ($api){
//这里写需要验证的接口
$api->(……)->name(……);
。
。
。 });
});
});
4.安装序列化器选择器
composer require liyu/dingo-serializer-switch
5.创建数据转换器
<?php namespace App\Transformers; use App\Models\Model;
use League\Fractal\TransformerAbstract; class ModelTransformer extends TransformerAbstract
{
public function transform(Model $model)
{
return [
'id' => $model->id,
。
。
。
。 ];
}
}
6.api鉴权
composer require tymon/jwt-auth:^1.0.0
生成jwt密匙:
php artisan jwt:secret
将config/auth.php的api guard的driver换成jwt:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
], 'api' => [
'driver' => 'jwt',
'provider' => 'users',
],
],
修改dingoapi的设置配合jwt实现api鉴权:
config/api。php
'auth' => [
'jwt' => 'Dingo\Api\Auth\Provider\JWT',
],
在app/Models/User。php中添加:
<?php namespace App\Models; use Auth;
use Spatie\Permission\Traits\HasRoles;
use Tymon\JWTAuth\Contracts\JWTSubject;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Auth\MustVerifyEmail as MustVerifyEmailTrait;
use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; class User extends Authenticatable implements MustVerifyEmailContract, JWTSubject .
.
.
public function getJWTIdentifier()
{
return $this->getKey();
} public function getJWTCustomClaims()
{
return [];
}
}
7.授权,获取token:
1.Auth::guard('api')->attempt($credentials))
Auth::guard('api')->factory()->getTTL() * 60
2.Auth::guard('api')->fromUser($user);
Auth::guard('api')->factory()->getTTL() * 60
8.刷新删除token
1.$token = Auth::guard('api')->refresh();
2.Auth::guard('api')->logout();
9.访问需要授权的接口
在请求的header中添加:
Authorization: Bearer {token}
10.开发时用arisan 获取token
1.创建command
2.
public function handle()
{
$userId = $this->ask('输入用户 id'); $user = User::find($userId); if (!$user) {
return $this->error('用户不存在');
} // 过期时间
$ttl = 365*24*60;
$this->info(\Auth::guard('api')->setTTL($ttl)->fromUser($user));
}
}
【微信小程序】安装DingoApi开发小程序api的更多相关文章
- ISS_1建站使其能够用ipad浏览器下载安装x-code开发的程序
一:第一种方法 1:把ipa上传到一个https类型的网站比如:https://worktile.com 2:更改plist中urrl <?xml version="1.0" ...
- nw.js开发第一个程序(html开发桌面程序exe)
一.环境配置 windows系统 cnpm install node 下载nw.js https://github.com/nwjs/nw.js 找到download下载合适的版本 二.开发 项目目录 ...
- 安装Glass Box代理程序
安装玻璃盒代理程序 目前版本的玻璃代理程序主要支持主流 Java EE 应用程序服务器(如 JBoss,Tomcat,WebLogic 和 WebSphere).玻璃盒代理程序可以自动化安装,但考虑到 ...
- 快速了解微信小程序的使用,一个根据小程序的框架开发的todos app
微信官方已经开放微信小程序的官方文档和开发者工具.前两天都是在看相关的新闻来了解小程序该如何开发,这两天官方的文档出来之后,赶紧翻看了几眼,重点了解了一下文档中框架与组件这两个部分,然后根据简易教程, ...
- 基于微信小程序的系统开发准备工作
腾讯推出微信小程序也有一段时间了,在各种行业里面也都掀起一阵阵的热潮,很多APP应用被简化为小程序的功能迅速推出,同时也根据小程序的特性推出各种独具匠心的应用,相对传统的APP来说,微信小程序确实能够 ...
- WordPress版微信小程序安装使用说明
昨天在群里,有刚刚使用WordPress版微信小程序朋友,在问安装过程中的问题,这些问题是经常被问到,这至少说明两个问题: 1.我开发的程序安装和使用不够简易,无法通过简单的配置就可以使用,特别是如果 ...
- 微信正式开放内测“小程序”,不开发APP的日子真的来了?
关注,QQ群,微信应用号社区 511389428 微信正式开放内测“小程序”,不开发APP的日子真的来了? 明星公司 缪定纯 • 2016-09-22 09:05 讨论了很久的微信应用号终于来了,不过 ...
- 微信小程序的功能开发工具跟公众号的差别,小程序是一种减负思维对简单APP是巨大打击
微信小程序的功能开发工具跟公众号的差别,小程序是一种减负思维对简单APP是巨大打击 摘要: 小程序和公众号最大的区别有如下四点:1.小程序没有粉丝,开发者在后台能看到的只能是累计用户访问数以及实时统计 ...
- (转)快速了解微信小程序的使用,一个根据小程序的框架开发的todos app
微信官方已经开放微信小程序的官方文档和开发者工具.前两天都是在看相关的新闻来了解小程序该如何开发,这两天官方的文档出来之后,赶紧翻看了几眼,重点了解了一下文档中框架与组件这两个部分,然后根据简易教程, ...
随机推荐
- Navicat Premium12.0 常用快捷键
- Python3 进程、线程和协程
Infi-chu: http://www.cnblogs.com/Infi-chu/ 进程.线程和协程的对比 1.定义对比 进程:是系统进行资源分配的基本单位,每启动一个进程,操作系统都需要为其分配运 ...
- NumPy实现数据的聚合,计算最大值,最小值
1.数组值的求和 首先构造一个具有100个值的数组,然后我们利用两个不同的方法进行求和: >>> l=np.random.random() l的数据如下: >>> ...
- 网络编程~~~~socketserver服务端
socketserver服务端 import socketserver class MyServer(socketserver.BaseRequestHandler): def handle(self ...
- tomcat修改进程名称
1.window平台: 打开tomcat_home\bin\setclasspath.bat文件,找到set _RUNJAVA=”%JRE_HOME%\bin\java”这一行. 将该行注释掉 ,然后 ...
- Phoenix核心功能原理及应用场景介绍以及Calcite 查询计划生成框架介绍
Phoenix是一个开源的HBase SQL层.它不仅可以使用标准的JDBC API替代HBase Client API创建表,插入和查询HBase,也支持二级索引.事物以及多种SQL层优化. 此系列 ...
- start_udev 是不是会写磁盘头
遇到一个案例,在这里记录一下 一套Oracle 11.2.0.4 RAC环境,操作系统是RHEL 6.5,共享磁盘是通过UDEV实现RAW绑定设备名,如下 [root@rac1 opt]# ll /d ...
- 两个list合并成一个list的操作
addAll 添加另一集合里面的元素 add 添加整个集合包括 [] Stream 操作 合并两个lis 出自http://www.it1352.com/963663.html public cl ...
- 数据库TINYINT类型 参数0 mybatis取不到值
tinyint存储0的奇怪问题 数据库TINYINT类型 参数0 mybatis取不到值 postman 传参 audited =0 audited =1 两种情况 ...
- acwing 70-72 剑指OFFER 二叉树相关
地址 https://www.acwing.com/problem/content/66/ https://www.acwing.com/problem/content/67/ https://www ...