Laravel API 인터페이스 만 들 기
API 를 설계 하기 시 작 했 을 때,우 리 는 이 8 가 지 를 주의해 야 한다.후속 개발 계획 은 이것 을 둘러싸 고 진행 되 었 다.
1.Restful 설계 원칙
2.API 의 이름
3.API 의 안전성
4.API 반환 데이터
5.그림 의 처리
6.돌아 오 는 알림 메시지
7.온라인 API 테스트 문서
8.app 이 시 작 될 때 API 를 초기 화하 여 필요 한 정 보 를 가 져 옵 니 다.
laravel 로 API 개발
제로 부터 공부 해 야 할 지 고민 하 다가 이 플러그 인 dingo/api 를 찾 았 습 니 다.그럼 지금 설치 하 세 요!
일단 다운 받 은 게 틀림 없어 요.
새로 설 치 된 laravel 의 coposer.json 에 다음 과 같은 내용 을 추가 합 니 다.
그리고 cmd 실행 열기
composer update
config/app.php 에 providers 를 추가 합 니 다.
App\Providers\OAuthServiceProvider::class,
Dingo\Api\Provider\LaravelServiceProvider::class,
LucaDegasperi\OAuth2Server\Storage\FluentStorageServiceProvider::class,
LucaDegasperi\OAuth2Server\OAuth2ServerServiceProvider::class,
aliases 에 추가
'Authorizer' => LucaDegasperi\OAuth2Server\Facades\Authorizer::class,
app/Http/Kernel.php 파일 의 내용 수정
protected $middleware = [\LucaDegasperi\OAuth2Server\Middleware\OAuthExceptionHandlerMiddleware::class,
];
protected $routeMiddleware = [
'oauth' => \LucaDegasperi\OAuth2Server\Middleware\OAuthMiddleware::class,
'oauth-user' => \LucaDegasperi\OAuth2Server\Middleware\OAuthUserOwnerMiddleware::class,
'oauth-client' => \LucaDegasperi\OAuth2Server\Middleware\OAuthClientOwnerMiddleware::class,
'check-authorization-params' => \LucaDegasperi\OAuth2Server\Middleware\CheckAuthCodeRequestMiddleware::class,
'csrf' => \App\Http\Middleware\VerifyCsrfToken::class,
];
그리고 집행php artisan vendor:publish
php artisan migrate
.env 파일 에 이 설정 을 추가 합 니 다.
API_STANDARDS_TREE=x
API_SUBTYPE=rest
API_NAME=REST
API_PREFIX=api
API_VERSION=v1
API_CONDITIONAL_REQUEST=true
API_STRICT=false
API_DEBUG=true
API_DEFAULT_FORMAT=json
app\\config\oauth2.php 파일 수정
'grant_types' => [
'password' => [
'class' => 'League\OAuth2\Server\Grant\PasswordGrant',
'access_token_ttl' => 604800,
'callback' => '\App\Http\Controllers\Auth\PasswordGrantVerifier@verify',
],
],
서비스 공급 자 를 새로 만 듭 니 다.app/Providers 에서 OAuth ServiceProvider.php 파일 을 새로 만 드 는 내용 은 다음 과 같 습 니 다.
namespace App\Providers;
use Dingo\Api\Auth\Auth;
use Dingo\Api\Auth\Provider\OAuth2;
use Illuminate\Support\ServiceProvider;
class OAuthServiceProvider extends ServiceProvider
{
public function boot()
{
$this->app[Auth::class]->extend('oauth', function ($app) {
$provider = new OAuth2($app['oauth2-server.authorizer']->getChecker());
$provider->setUserResolver(function ($id) {
// Logic to return a user by their ID.
});
$provider->setClientResolver(function ($id) {
// Logic to return a client by their ID.
});
return $provider;
});
}
public function register()
{
//
}
}
그리고 routes.php 를 열 어 관련 경 로 를 추가 합 니 다.
//Get access_token
Route::post('oauth/access_token', function() {
return Response::json(Authorizer::issueAccessToken());
});
//Create a test user, you don't need this if you already have.
Route::get('/register',function(){
$user = new App\User();
$user->name="tester";
$user->email="[email protected]";
$user->password = \Illuminate\Support\Facades\Hash::make("password");
$user->save();
});
$api = app('Dingo\Api\Routing\Router');
//Show user info via restful service.
$api->version('v1', ['namespace' => 'App\Http\Controllers'], function ($api) {
$api->get('users', 'UsersController@index');
$api->get('users/{id}', 'UsersController@show');
});
//Just a test with auth check.
$api->version('v1', ['middleware' => 'api.auth'] , function ($api) {
$api->get('time', function () {
return ['now' => microtime(), 'date' => date('Y-M-D',time())];
});
});
각각 BaseController.php 와 UsersController.php 를 만 드 는 내용 은 다음 과 같 습 니 다.
//BaseController
namespace App\Http\Controllers;
use Dingo\Api\Routing\Helpers;
use Illuminate\Routing\Controller;
class BaseController extends Controller
{
use Helpers;
}
//UsersController
namespace App\Http\Controllers;
use App\User;
use App\Http\Controllers\Controller;
class UsersController extends BaseController
{
public function index()
{
return User::all();
}
public function show($id)
{
$user = User::findOrFail($id);
//
return $this->response->array($user->toArray());
}
}
그 다음 에 app/Http/controllers/Auth/에서 PasswordGrant Verifier.php 를 만 드 는 내용 은 다음 과 같 습 니 다.
namespace App\Http\Controllers\Auth;
use Illuminate\Support\Facades\Auth;
class PasswordGrantVerifier
{
public function verify($username, $password)
{
$credentials = [
'email' => $username,
'password' => $password,
];
if (Auth::once($credentials)) {
return Auth::user()->id;
}
return false;
}
}
데이터베이스 열기 oauthclient 표 에 client 데이터 추가
INSERT INTO 'oauth_clients' ('id', 'secret', 'name', 'created_at', 'updated_at') VALUES ('1', '2', 'Main website', '2016C03C13 23:00:00', '0000C00C00 00:00:00');
그 다음 에 즐 거 운 테스트 를 하 러 갔 어 요.여기 테스트 할 API 가 있어 요.사용자 추가
http://localhost/register
모든 사용자 정보 읽 기
http://localhost/api/users
사용자 id 가 4 인 정보 만 되 돌려 줍 니 다.
http://localhost/api/users/4
획득 accesstoken
http://localhost/oauth/access_token
token 값 으로 시간 을 얻 으 면 token 값 이 정확 해 야 정확 한 값 을 되 돌려 줍 니 다.
http://localhost/api/time
PostMan 열기
이상 은 Laravel 이 API 인 터 페 이 스 를 만 드 는 상세 한 내용 입 니 다.Laravel 이 API 인 터 페 이 스 를 만 드 는 것 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
단순 Laravel+Vue.js에서 VueUI를 사용하여 로그인 및 등록Laravel에는 웹 팩과 같은 Laravel-Mix가 있는데, 이를 이용해서 Laravel에 Vue.js를 실현할 수 있다. 이번에는 몇 가지 명령을 통해 간단하게 VueUI로 로그인하여 로그인을 할 수 있습니다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.