Écriture de l'interface APP (API) dans Laravel

*文
Libérer: 2023-03-18 19:10:02
original
12254 Les gens l'ont consulté

Cet article présente principalement les informations pertinentes sur la création d'une interface APP (API) basée sur Laravel. Les amis dans le besoin peuvent s'y référer. J'espère que cela aide tout le monde.

Préparation préliminaire

Préface, pourquoi et que faire
Mon nom de famille est Bai, et je suis novice en programmation Cependant, depuis. Je suis entré en contact avec les merveilles de la programmation au cours de ma première année, j'ai été complètement immergé dans le monde de la programmation.

Non, j'ai récemment recommencé à jouer avec les applications. On dit qu'il est très facile de développer une application maintenant. Elle peut être complétée avec seulement du JavaScript et un peu de technologie HTML+css. Mais le backend de l’APP est différent. Après avoir développé une application et souhaité y lire des données, nous devons développer un backend.

Le framework Laravel est mon framework PHP préféré, sans exception. L'année dernière, j'ai utilisé Laravel pour écrire mon site Web personnel, mais la rugosité m'a fait rougir. D'accord, n'entrons pas dans les détails, passons directement au sujet - installez d'abord Laravel !

Configuration de l'environnement de base

Pour les étapes spécifiques, veuillez vous référer directement à la documentation d'installation de Laravel5.2

La mienne. L'environnement est Win10. Wampsrver2.5 est installé ci-dessus, mais cela vaut la peine d'y prêter attention. Si vous utilisez wampsrver2.5, ces emplacements doivent être modifiés. A ce propos, merci de lire mes notes et de cliquer pour prévisualiser
Outil : sublime
Navigateur : chrome (plug-in postman à utiliser)

À propos de l'API

API (Application Programming Interface, Application Programming Interface) sont des fonctions prédéfinies qui offrent aux applications et aux développeurs la possibilité d'accéder à un ensemble de routines basées sur certains logiciels ou matériels sans accéder au code source, ou de comprendre les détails du fonctionnements internes.
Il convient de noter que l'API a son objectif spécifique, et nous devrions savoir ce qu'elle fait. Ce qui doit être saisi lors de l'accès à l'API. Que devriez-vous obtenir après avoir accédé à l'API.

Lorsque nous commençons à concevoir l'API, nous devons prêter attention à ces 8 points
Le contenu ici est extrait du blog du maître
Le plan de développement ultérieur tournera autour de cela. (Vraiment excellent résumé)

1.Principes de conception reposants
2.Nom de l'API
3.Sécurité de l'API
4.Données de retour de l'API
5.Traitement des images
6. Informations d'invite renvoyées
7. Documentation de test de l'API en ligne
8 Lorsque l'application démarre, appelez une API d'initialisation pour obtenir les informations nécessaires

Utiliser l'API de développement Laravel
.

Juste au moment où je me demandais si je devais commencer à apprendre à partir de zéro, j'ai trouvé ce plug-in dingo/api, alors installons-le maintenant !
Tout d'abord, il doit être téléchargé correctement
Ajoutez le contenu suivant au laravel composer.json nouvellement installé

Ensuite, ouvrez cmd et exécutez

composer update
Copier après la connexion

dans config/ app. Ajoutez

App\Providers\OAuthServiceProvider::class,
Dingo\Api\Provider\LaravelServiceProvider::class,
LucaDegasperi\OAuth2Server\Storage\FluentStorageServiceProvider::class,
LucaDegasperi\OAuth2Server\OAuth2ServerServiceProvider::class,
Copier après la connexion

aux fournisseurs en php et ajoutez

'Authorizer' => LucaDegasperi\OAuth2Server\Facades\Authorizer::class,
Copier après la connexion

aux alias. Modifiez le contenu dans le fichier app/Http/Kernel.php

<🎜. >

protected $middleware = [\LucaDegasperi\OAuth2Server\Middleware\OAuthExceptionHandlerMiddleware::class,
];
protected $routeMiddleware = [
  &#39;oauth&#39; => \LucaDegasperi\OAuth2Server\Middleware\OAuthMiddleware::class,
  &#39;oauth-user&#39; => \LucaDegasperi\OAuth2Server\Middleware\OAuthUserOwnerMiddleware::class,
  &#39;oauth-client&#39; => \LucaDegasperi\OAuth2Server\Middleware\OAuthClientOwnerMiddleware::class,
  &#39;check-authorization-params&#39; => \LucaDegasperi\OAuth2Server\Middleware\CheckAuthCodeRequestMiddleware::class,
  &#39;csrf&#39; => \App\Http\Middleware\VerifyCsrfToken::class,
];
Copier après la connexion
Puis exécutez


php artisan vendor:publish 
php artisan migrate
Copier après la connexion
Ajoutez ces configurations dans le fichier .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

Modifiez le fichier appconfigoauth2.php

&#39;grant_types&#39; => [
  &#39;password&#39; => [
    &#39;class&#39; => &#39;League\OAuth2\Server\Grant\PasswordGrant&#39;,
    &#39;access_token_ttl&#39; => 604800,
    &#39;callback&#39; => &#39;\App\Http\Controllers\Auth\PasswordGrantVerifier@verify&#39;,
  ],
],
Copier après la connexion
Créez un nouveau fournisseur de services, créez un nouveau fichier OAuthServiceProvider.php sous app/Providers avec le contenu suivant

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(&#39;oauth&#39;, function ($app) {
      $provider = new OAuth2($app[&#39;oauth2-server.authorizer&#39;]->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()
  {
    //
  }
}
Copier après la connexion
Ensuite ouvrez routes.php et ajoutez le routage associé

//Get access_token
Route::post(&#39;oauth/access_token&#39;, function() {
   return Response::json(Authorizer::issueAccessToken());
});

//Create a test user, you don&#39;t need this if you already have.
Route::get(&#39;/register&#39;,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(&#39;Dingo\Api\Routing\Router&#39;);

//Show user info via restful service.
$api->version(&#39;v1&#39;, [&#39;namespace&#39; => &#39;App\Http\Controllers&#39;], function ($api) {
  $api->get(&#39;users&#39;, &#39;UsersController@index&#39;);
  $api->get(&#39;users/{id}&#39;, &#39;UsersController@show&#39;);
});

//Just a test with auth check.
$api->version(&#39;v1&#39;, [&#39;middleware&#39; => &#39;api.auth&#39;] , function ($api) {
  $api->get(&#39;time&#39;, function () {
    return [&#39;now&#39; => microtime(), &#39;date&#39; => date(&#39;Y-M-D&#39;,time())];
  });
});
Copier après la connexion
Créez respectivement BaseController.php et UsersController.php avec le contenu suivant

//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());
  }
}
Copier après la connexion
Créez ensuite PasswordGrantVerifier.php sous app/Http/Controllers /Auth/ avec le contenu suivant

namespace App\Http\Controllers\Auth;
use Illuminate\Support\Facades\Auth;

class PasswordGrantVerifier
{
  public function verify($username, $password)
  {
     $credentials = [
      &#39;email&#39;  => $username,
      &#39;password&#39; => $password,
     ];

     if (Auth::once($credentials)) {
       return Auth::user()->id;
     }

     return false;
  }
}
Copier après la connexion
Ouvrez la table oauth_client de la base de données et ajoutez une nouvelle donnée client

INSERT INTO &#39;oauth_clients&#39; (&#39;id&#39;, &#39;secret&#39;, &#39;name&#39;, &#39;created_at&#39;, &#39;updated_at&#39;) VALUES (&#39;1&#39;, &#39;2&#39;, &#39;Main website&#39;, &#39;2016–03–13 23:00:00&#39;, &#39;0000–00–00 00:00:00&#39;);
Copier après la connexion
Ensuite, il est temps de s'amuser en testant les API à venir. testés ici sont


Nouveau Ajouter un utilisateur

http://localhost/register


Lire toutes les informations utilisateur

http : //localhost/api/users


Renvoyer uniquement les informations avec l'ID utilisateur 4

http://localhost/api/users/4


Obtenir access_token

http:// localhost/oauth/access_token


Utilisez la valeur du jeton pour obtenir l'heure Ce n'est que lorsque la valeur du jeton est correcte que la valeur correcte peut être renvoyée

.

http://localhost/api/time


Ouvrir PostMan

Recommandations associées :

Comment accéder au paiement Paypal dans Larvel5

Apprenez la relation éloquente de Laravel5

Utilisation de la file d'attente dans Laravel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal