laravel을 기반으로 API 인터페이스 만들기
API 정보
API(Application Programing Interface, 애플리케이션 프로그래밍 인터페이스)는 특정 소프트웨어나 하드웨어를 기반으로 애플리케이션과 개발자에게 액세스 권한을 제공하도록 설계된 사전 정의된 기능입니다. 소스 코드에 액세스하거나 내부 작동의 세부 사항을 이해하지 않고도 루틴 세트의 기능을 사용할 수 있습니다.
API에는 특정 목적이 있으며 API가 수행하는 작업을 알아야 합니다. API에 접근할 때 입력해야 할 사항입니다. API에 액세스한 후 무엇을 얻을 수 있습니까?
API 설계를 시작할 때 다음 8가지 사항에 주의해야 합니다.
이후 개발 계획은 이를 중심으로 진행됩니다.
1. 편안한 디자인 원칙
2. API 이름 지정
3. API 보안
4. API 반환 데이터
5. 이미지 처리
6. 반환된 프롬프트 정보
7. 온라인 API 테스트 문서
8. In 앱이 시작되면, 필요한 정보를 얻기 위해 초기화 API를 호출합니다
Develop API with laravel
처음부터 학습을 시작할까 고민하던 중에 이 플러그인 dingo/api를 찾았으니 이제 해보자 설치하세요!
먼저 올바르게 다운로드해야 합니다
새로 설치된 laravel Composer.json에 다음 콘텐츠를 추가합니다
그런 다음 cmd를 열고
composer update
를 실행합니다. config/app.php의 공급자에
을 추가합니다.App\Providers\OAuthServiceProvider::class, Dingo\Api\Provider\LaravelServiceProvider::class, LucaDegasperi\OAuth2Server\Storage\FluentStorageServiceProvider::class, LucaDegasperi\OAuth2Server\OAuth2ServerServiceProvider::class,
별칭에
'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 art를 실행하세요. 이산 이주
.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
appconfigoauth2.php 파일을 수정하세요
'grant_types' => [ 'password' => [ 'class' => 'League\OAuth2\Server\Grant\PasswordGrant', 'access_token_ttl' => 604800, 'callback' => '\App\Http\Controllers\Auth\PasswordGrantVerifier@verify', ], ],
새 서비스 공급자를 만들고 다음 콘텐츠로 app/Providers 아래에 새 OAuthServiceProvider.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() { // } }
그런 다음 엽니다. 다음 내용으로 각각 BaseController.php 및 UsersController.php를 생성합니다. /Controllers/Auth/ 다음 내용
//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="test@test.com"; $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())]; }); });
데이터베이스의 oauth_client 테이블을 열고 새 클라이언트 데이터를 추가하세요
//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()); } }
http://localhost/ api/users/4
Get access_token
http: //localhost/oauth/access_token
토큰 값을 사용하여 시간을 가져옵니다. 토큰 값이 올바른 경우에만 올바른 값이 반환됩니다
http:// localhost/api/time
PostMan 열기
더 많은 laravel 프레임워크 기술 기사를 보려면 laravel튜토리얼을 방문하세요!