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的更多相关文章

  1. ISS_1建站使其能够用ipad浏览器下载安装x-code开发的程序

    一:第一种方法 1:把ipa上传到一个https类型的网站比如:https://worktile.com 2:更改plist中urrl <?xml version="1.0" ...

  2. nw.js开发第一个程序(html开发桌面程序exe)

    一.环境配置 windows系统 cnpm install node 下载nw.js https://github.com/nwjs/nw.js 找到download下载合适的版本 二.开发 项目目录 ...

  3. 安装Glass Box代理程序

    安装玻璃盒代理程序 目前版本的玻璃代理程序主要支持主流 Java EE 应用程序服务器(如 JBoss,Tomcat,WebLogic 和 WebSphere).玻璃盒代理程序可以自动化安装,但考虑到 ...

  4. 快速了解微信小程序的使用,一个根据小程序的框架开发的todos app

    微信官方已经开放微信小程序的官方文档和开发者工具.前两天都是在看相关的新闻来了解小程序该如何开发,这两天官方的文档出来之后,赶紧翻看了几眼,重点了解了一下文档中框架与组件这两个部分,然后根据简易教程, ...

  5. 基于微信小程序的系统开发准备工作

    腾讯推出微信小程序也有一段时间了,在各种行业里面也都掀起一阵阵的热潮,很多APP应用被简化为小程序的功能迅速推出,同时也根据小程序的特性推出各种独具匠心的应用,相对传统的APP来说,微信小程序确实能够 ...

  6. WordPress版微信小程序安装使用说明

    昨天在群里,有刚刚使用WordPress版微信小程序朋友,在问安装过程中的问题,这些问题是经常被问到,这至少说明两个问题: 1.我开发的程序安装和使用不够简易,无法通过简单的配置就可以使用,特别是如果 ...

  7. 微信正式开放内测“小程序”,不开发APP的日子真的来了?

    关注,QQ群,微信应用号社区 511389428 微信正式开放内测“小程序”,不开发APP的日子真的来了? 明星公司 缪定纯 • 2016-09-22 09:05 讨论了很久的微信应用号终于来了,不过 ...

  8. 微信小程序的功能开发工具跟公众号的差别,小程序是一种减负思维对简单APP是巨大打击

    微信小程序的功能开发工具跟公众号的差别,小程序是一种减负思维对简单APP是巨大打击 摘要: 小程序和公众号最大的区别有如下四点:1.小程序没有粉丝,开发者在后台能看到的只能是累计用户访问数以及实时统计 ...

  9. (转)快速了解微信小程序的使用,一个根据小程序的框架开发的todos app

    微信官方已经开放微信小程序的官方文档和开发者工具.前两天都是在看相关的新闻来了解小程序该如何开发,这两天官方的文档出来之后,赶紧翻看了几眼,重点了解了一下文档中框架与组件这两个部分,然后根据简易教程, ...

随机推荐

  1. MySQl看这一篇就够了

    MySQL分享 一.数据库结构 语句 DDL(Data Definition Languages):数据定义语句,常用的语句关键字主要包括 create.drop.alter等操作表结构 DML(Da ...

  2. 30-学容器必须懂 bridge 网络

    Docker 安装时会创建一个 命名为 docker0 的 linux bridge.如果不指定--network,创建的容器默认都会挂到 docker0 上. apt-get install bri ...

  3. linux下安装oracle数据库--干货

    1.修改系统名称,关闭防火墙,selinux.2.挂载镜像,并写入开机自动挂载.挂载点为/mnt/yummount -t iso9660 -o,loop /soft/Centos6.iso /mnt/ ...

  4. MongoDB 不在开源了,使用 Homebrew 安装只能玩社区版了

    使用了大半年的 mongodb ,最近在公司的新项目中应用,在 mac 上安装 mongodb 时发现始终安装不了,一直在报下面这样的错误: brew install mongodb 升级 brew  ...

  5. 005.MongoDB索引及聚合

    一 MongoDB 索引 索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录. 这种扫描全集合的查询效率是非常低的,特别在处 ...

  6. request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/"

    String path = request.getContextPath(); String basePath = request.getScheme()+"://"+reques ...

  7. JAVA实现二维码生成加背景图

    pom.xml依赖 <!-- 二维码生成 -->         <!-- https://mvnrepository.com/artifact/com.google.zxing/c ...

  8. 微信小程序支付功能讲解(2)

    小程序支付 业务流程时序图 官方文档 步骤: 1. Openid 在小程序初次加载的时候就已经获取(详情见 小程序登录) 2. 生成商户订单 1.商品信息由小程序端提供 2.提供支付统一下单接口所需参 ...

  9. 如何在Markdown格式下插入动图/gif

    上传GIF动图与上传普通图片是一样的,都需要以下在markdown语法中 ![]() 的小括号内填写图片的地址.问题在于如何获取本地gif的地址呢? 核心的东西就是要把这个gif动图传上网络,这样图片 ...

  10. 【python爬虫】requests模块

    文档:从 pythoneer 到 pythonista 的100个模块 链接:http://note.youdao.com/noteshare?id=2b95bb3651c21af80ca1936f8 ...