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 是否可以使用