Heim  >  Artikel  >  Backend-Entwicklung  >  Schreiben einer APP-Schnittstelle (API) in Laravel

Schreiben einer APP-Schnittstelle (API) in Laravel

*文
*文Original
2017-12-29 19:05:2112240Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn