In diesem Artikel werden hauptsächlich relevante Informationen zur Erstellung einer APP-Schnittstelle (API) auf Basis von Laravel vorgestellt. Freunde in Not können darauf zurückgreifen. Ich hoffe, es hilft allen.
Vorbereitende Vorbereitung
Vorwort, warum und was zu tun ist
Mein Nachname ist Bai und ich bin ein Anfänger in der Programmierung Mit der wunderbaren Sache des Programmierens bin ich in meinem ersten Jahr in Berührung gekommen, ich bin völlig in die Welt des Programmierens eingetaucht.
Nein, ich habe vor kurzem wieder angefangen, mich mit APPs zu beschäftigen. Es heißt, dass es jetzt wirklich einfach ist, eine APP zu entwickeln. Sie kann nur mit JavaScript und ein wenig HTML+CSS-Technologie erstellt werden. Aber das Backend der APP ist anders. Nachdem wir eine APP entwickelt haben und einige Daten darin einlesen möchten, müssen wir ein Backend entwickeln.
Das Laravel-Framework ist ohne Ausnahme mein Lieblings-PHP-Framework. Letztes Jahr habe ich Laravel verwendet, um meine persönliche Website zu schreiben, aber die Rauheit hat mich erröten lassen. Okay, gehen wir nicht ins Detail, gehen wir direkt zum Thema – installieren Sie zuerst Laravel!
Grundlegende Umgebungskonfiguration
Spezifische Schritte finden Sie direkt in der Dokumentation zur Laravel5.2-Installation
Meine eigene Umgebung ist Win10 Wampsrver2.5 ist oben installiert, aber es lohnt sich, darauf zu achten. Wenn Sie wampsrver2.5 verwenden, müssen diese Orte geändert werden. Bitte lesen Sie hierzu meine Notizen und klicken Sie zur Vorschau
Tool: sublime
Browser: chrome (zu verwendendes Postman-Plug-in)
Über API
API (Application Programming Interface, Application Programming Interface) sind vordefinierte Funktionen, die Anwendungen und Entwicklern die Möglichkeit bieten, auf eine Reihe von Routinen basierend auf bestimmter Software oder Hardware zuzugreifen, ohne auf den Quellcode zuzugreifen oder die Details zu verstehen des Innenlebens.
Es sollte beachtet werden, dass die API ihren spezifischen Zweck hat und wir wissen sollten, was sie tut. Was sollte beim Zugriff auf die API eingegeben werden? Was sollten Sie nach dem Zugriff auf die API erhalten?
Wenn wir mit dem Design der API beginnen, sollten wir auf diese 8 Punkte achten
Der Inhalt hier ist ein Auszug aus dem Blog des Masters
Der nachfolgende Entwicklungsplan wird sich darum drehen. (Wirklich tolle Zusammenfassung)
1.Erholsame Designprinzipien
2.API-Benennung
3.API-Sicherheit
4.API-Rückgabedaten
5.Bildverarbeitung
6. Zurückgegebene Eingabeaufforderungsinformationen
7. Online-API-Testdokumentation
8. Rufen Sie beim Start der App eine Initialisierungs-API auf, um die erforderlichen Informationen zu erhalten
Verwenden Sie die Laravel-Entwicklungs-API
Gerade als ich darüber nachdachte, ob ich von Grund auf lernen sollte, habe ich dieses Plug-in Dingo/API gefunden, also lass es uns jetzt installieren!
Zuerst muss es korrekt heruntergeladen werden
Fügen Sie den folgenden Inhalt zur neu installierten Laravel Composer.json hinzu
Öffnen Sie dann cmd und führen Sie
composer update
in config/ aus app. Fügen Sie
App\Providers\OAuthServiceProvider::class, Dingo\Api\Provider\LaravelServiceProvider::class, LucaDegasperi\OAuth2Server\Storage\FluentStorageServiceProvider::class, LucaDegasperi\OAuth2Server\OAuth2ServerServiceProvider::class,
zu den Anbietern in PHP hinzu und fügen Sie
'Authorizer' => LucaDegasperi\OAuth2Server\Facades\Authorizer::class,
zu den Aliasen hinzu. Ändern Sie den Inhalt in der Datei 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, ];
Dann ausführen
php artisan vendor:publish php artisan migrate
Fügen Sie diese Konfigurationen in der .env-Datei hinzu
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
Ändern Sie die Datei appconfigoauth2.php
'grant_types' => [ 'password' => [ 'class' => 'League\OAuth2\Server\Grant\PasswordGrant', 'access_token_ttl' => 604800, 'callback' => '\App\Http\Controllers\Auth\PasswordGrantVerifier@verify', ], ],
Erstellen Sie einen neuen Dienstanbieter und erstellen Sie unter app/Providers eine neue Datei OAuthServiceProvider.php mit dem folgenden Inhalt
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() { // } }
Dann Öffnen Sie Routes.php und fügen Sie zugehöriges Routing hinzu.
//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())]; }); });
Erstellen Sie BaseController.php bzw. UsersController.php mit dem folgenden Inhalt.
//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()); } }
Erstellen Sie dann PasswordGrantVerifier.php unter app/Http/Controllers /Auth/ mit dem folgenden Inhalt
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; } }
Öffnen Sie die Tabelle oauth_client der Datenbank und fügen Sie neue Clientdaten hinzu
INSERT INTO 'oauth_clients' ('id', 'secret', 'name', 'created_at', 'updated_at') VALUES ('1', '2', 'Main website', '2016–03–13 23:00:00', '0000–00–00 00:00:00');
Dann ist es Zeit, die APIs zu testen hier getestet sind
Neu Benutzer hinzufügen
http://localhost/register
Alle Benutzerinformationen lesen
http: //localhost/api/users
Nur Informationen mit Benutzer-ID 4 zurückgeben
http://localhost/api/users/4
Get access_token
http:// localhost/oauth/access_token
Verwenden Sie den Token-Wert, um die Zeit zu erhalten. Nur wenn der Token-Wert korrekt ist, kann der korrekte Wert zurückgegeben werden
http://localhost/api/time
Open PostMan
Verwandte Empfehlungen:
So greifen Sie auf PayPal-Zahlungen in larvel5 zu
Lernen Sie die eloquente Beziehung von Laravel5
Warteschlange in Laravel verwenden
Das obige ist der detaillierte Inhalt vonSchreiben einer APP-Schnittstelle (API) in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!