【微信小程序】安装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
微信官方已经开放微信小程序的官方文档和开发者工具.前两天都是在看相关的新闻来了解小程序该如何开发,这两天官方的文档出来之后,赶紧翻看了几眼,重点了解了一下文档中框架与组件这两个部分,然后根据简易教程, ...
随机推荐
- 甲方安全之安卓App第三方加固对比
前段时间公司要给 Android 应用进行加固,由笔者来选一家加固产品.然后发现,加固产品何其之多,且鱼龙混杂.各种问题也是层出不穷,比如,有些加固时间非常久.有些加固会失败.有些运行会崩溃等等问题. ...
- 北航软件学院Java历届期末考题整理
文章目录 abstract static Thread finally package Exception I/O 子类和父类 关键字 标识符 垃圾收集 数据类型 环境配置 网路编程 initial ...
- Error 942 occured during Initialization of Bufq KUPC$S_1_20181023155636
一台ORACLE实例(Oracle Database 10g Release 10.2.0.5.0)启动时,报"Error 942 occured during Initializati ...
- 表单生成器(Form Builder)之表单数据存储结构mongodb篇
从这篇笔记开始,记录一下表单生成器(Form Builder)相关的一些东西,网上关于他的介绍有很多,这里就不解释了. 开篇说一下如何存储Form Builder生成的数据.
- (办公)访问其他系统接口httpClient,异步访问
访问其他系统接口httpClient,但是都是同步的,同步意味当前线程是阻塞的,只有本次请求完成后才能进行下一次请求;异步意味着所有的请求可以同时塞入缓冲区,不阻塞当前的线程; httpClient请 ...
- vscode 问题。。。。
"program": "${workspaceFolder}/a.out", "preLaunchTask": "build&qu ...
- 201871010116-祁英红《面向对象程序设计(java)》第七周学习总结
项目 内容 <面向对象程序设计(java)> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/ ...
- linux,xshell命令
一. linux 1.Linux发行版 <1> 常见的发行版本如下: Ubuntu Redhat Fedora openSUSE Linux Mint Debian Manjaro M ...
- Ubuntu 修改默认编辑器
sudo update-alternatives --config editor
- LeetCode 705:设计哈希集合 Design HashSet
题目: 不使用任何内建的哈希表库设计一个哈希集合 具体地说,你的设计应该包含以下的功能 add(value):向哈希集合中插入一个值. contains(value) :返回哈希集合中是否存在这个值. ...