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 是否可以使用
网友评论