laravel + api dingo/api +jwt 接口开发

1. 安装 dingo/api
在当前项目目录下的 composer.json 里 配置

你需要修改你的composer.json文件,然后执行composer update把最后一个版本的包加入你的项目

"require": {"dingo/api":"1.0.*@dev"}



在cmd 下
执行


打开config/app.php,注册必要的 service provider 在你的应用 providers之前

'providers'=>[Dingo\Api\Provider\LaravelServiceProvider::class]


php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"


执行cmd  命令 含义是 吧vendor 下的dingo 下的api 下的config 下的 api.php 复制 到 config \api.php

配置config 下的 api

'standardsTree'=> env('API_STANDARDS_TREE','vnd'),

                    这有三个不用的树:x,prs和vnd。你使用的标准树需要取决于你开发的项目

                  未注册的树(x)主要表示本地和私有环境

                    私有树(prs)主要表示没有商业发布的项目

                  供应商树(vnd)主要表示公开发布的项目

'subtype'=> env('API_SUBTYPE','blog'),

                     blog 指的是项目名

'version'=> env('API_VERSION','v1'),

                    version 是你 API 的默认版本, 用于某些状况下没有指定版本号的时候。它也用作生成 API 文档的默认版本。

'prefix'=> env('API_PREFIX','api'),

                    如果你曾经写过 API,你应该知道大部分的 API 不是有一个子域名就是有一个前缀。一个前缀或者子域名是必要的,但是只能有一                    个。应避免将版本号作为前缀或者子域名,版本的变更应该由Accept头控制。

'domain'=> env('API_DOMAIN',null),

'name'=> env('API_NAME','Blog'),

'conditionalRequest'=> env('API_CONDITIONAL_REQUEST',true),

'strict'=> env('API_STRICT',false),

'debug'=> env('API_DEBUG',true),  开发时为true 项目上线为false

//控制api请求 可以控制api 的请求次数 防止恶意请求

'throttling'=> [

],


配置完成后 在app 目录下创建api /controllers /Hellocontroller.php


设置控制器


然后访问


安装jwt 保护api接口

"tymon/jwt-auth":"0.5.*",


 cmd  composer update 更新

到config/app下的providers配置


重新改名

'JWTAuth'=> Tymon\JWTAuth\Facades\JWTAuth::class,

'JWTFactory'=> Tymon\JWTAuth\Facades\JWTFactory::class,

然后发布相应配置文件:

php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"

成功后 会在config下生 jwt.php

最后生成密钥:

php artisan jwt:generate


use JWTAuth;

use Tymon\JWTAuth\Exceptions\JWTException;

class AuthenticateController extends Controller

{

public function authenticate(Request $request)

{

// grab credentials from the request

$credentials = $request->only('email', 'password');

try {

// attempt to verify the credentials and create a token for the user

if (! $token = JWTAuth::attempt($credentials)) {

return response()->json(['error' => 'invalid_credentials'], 401);

}

} catch (JWTException $e) {

// something went wrong whilst attempting to encode the token

return response()->json(['error' => 'could_not_create_token'], 500);

}

// all good so return the token

return response()->json(compact('token'));

}

}

使用 php artisan api:routes 查看api 是否可以使用

推荐阅读更多精彩内容