【微信小程序】安装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
微信官方已经开放微信小程序的官方文档和开发者工具.前两天都是在看相关的新闻来了解小程序该如何开发,这两天官方的文档出来之后,赶紧翻看了几眼,重点了解了一下文档中框架与组件这两个部分,然后根据简易教程, ...
随机推荐
- linux基本命令的操作
---恢复内容开始--- ----------------------------=========================文件与目录操作cd /home 进入’/homw’目录cd … 返回 ...
- Dynamics 365触发Microsoft Flow自动生成PDF并作为附件送邮件
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- Java Web工程目录结构
说明 介绍java web 工程的基本结构目录.记录java web 工程结构的学习. Java web 结构 java web严格来说分为两类工程结构:一个是工程编译目录结构,一个是工程发布目录结构 ...
- Android 媒体格式
音频格式和编解码器 格式/编解码器 编码器 解码器 细节 支持的文件类型/容器格式 AAC LC • • 支持单声道/立体声/ 5.0 / 5.1内容,标准采样率为8至48 kHz. •3GPP(.3 ...
- MyBatis之接口绑定方案及多参数传递
1.说明 所谓的MyBatis接口绑定,指的是实现创建一个接口后,把mapper.xml 由mybatis 生成接口的实现类,通过调用接口对象就可以获取mapper.xml 中编写的sql.在SS ...
- 微信小程序根据生日获取年龄
// 根据出生日期计算年龄周岁 传参格式为1996-06-08 // 根据出生日期计算年龄周岁 传参格式为1996-06-08 function getAge(strBirthday) { var r ...
- Recover With Until Time fails With RMAN-20207 When Time Is Before Last RESETLOGS (Doc ID 159405.1)
Recover With Until Time fails With RMAN-20207 When Time Is Before Last RESETLOGS (Doc ID 159405.1) A ...
- 关于CCTextFieldTTF的几点注意事项
TextField 基本名词 IME:输入法编辑器 placeholder:默认显示 事项 两种创建方式,一种是以文字的大小为准,此时如果如果内容超过编辑框大小,会自动扩展:另一种添加了对编辑框大小的 ...
- Druid-代码段-3-1
所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应主流程3,新增连接的守护线程: //DruidDataSource的内部类,对应主流程3,用来补充连接 public class ...
- 数组中的第K个最大元素
在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2输出: 5示 ...