Laravel API 인터페이스 만 들 기

6750 단어 Laravelapi
주의해 야 할 것 은 API 는 구체 적 인 용도 가 있 기 때문에 우 리 는 그것 이 무엇 을 하 는 지 알 아야 한다.API 에 접근 할 때 무엇 을 입력 해 야 합 니까?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 인 터 페 이 스 를 만 드 는 것 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!

좋은 웹페이지 즐겨찾기