Maison  >  Article  >  développement back-end  >  Écriture de l'interface APP (API) dans Laravel

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

*文
*文original
2017-12-29 19:05:2112242parcourir

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

dans config/ app. Ajoutez

App\Providers\OAuthServiceProvider::class,
Dingo\Api\Provider\LaravelServiceProvider::class,
LucaDegasperi\OAuth2Server\Storage\FluentStorageServiceProvider::class,
LucaDegasperi\OAuth2Server\OAuth2ServerServiceProvider::class,

aux fournisseurs en php et ajoutez

'Authorizer' => LucaDegasperi\OAuth2Server\Facades\Authorizer::class,

aux alias. Modifiez le contenu dans le fichier 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,
];
Puis exécutez


php artisan vendor:publish 
php artisan migrate
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

'grant_types' => [
  'password' => [
    'class' => 'League\OAuth2\Server\Grant\PasswordGrant',
    'access_token_ttl' => 604800,
    'callback' => '\App\Http\Controllers\Auth\PasswordGrantVerifier@verify',
  ],
],
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('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()
  {
    //
  }
}
Ensuite ouvrez routes.php et ajoutez le routage associé

//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())];
  });
});
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());
  }
}
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 = [
      'email'  => $username,
      'password' => $password,
     ];

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

     return false;
  }
}
Ouvrez la table oauth_client de la base de données et ajoutez une nouvelle donnée client

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');
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!

Déclaration:
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