>  기사  >  PHP 프레임워크  >  laravel을 기반으로 API 인터페이스 만들기

laravel을 기반으로 API 인터페이스 만들기

L
L앞으로
2020-05-28 16:03:296697검색

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());
  }
}
그럼 여기서 테스트할 API는입니다.

새 사용자 추가http://localhost/register모든 사용자 정보 읽기

http://localhost/api/users사용자 ID가 4인 정보만 반환


http://localhost/ api/users/4

Get access_token

http: //localhost/oauth/access_token

토큰 값을 사용하여 시간을 가져옵니다. 토큰 값이 올바른 경우에만 올바른 값이 반환됩니다

http:// localhost/api/time

PostMan 열기


더 많은 laravel 프레임워크 기술 기사를 보려면 laravel튜토리얼을 방문하세요!

위 내용은 laravel을 기반으로 API 인터페이스 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제