Home  >  Article  >  Backend Development  >  Making APP interface (API) based on laravel, laravelapp interface api_PHP tutorial

Making APP interface (API) based on laravel, laravelapp interface api_PHP tutorial

WBOY
WBOYOriginal
2016-07-12 08:57:07764browse

Making APP interface (API) based on laravel, laravelapp interface api

Preliminary preparation

Preface, why and what to do
My surname is Bai, and I am truly a novice in programming. However, ever since I came into contact with the wonderful thing of programming during my freshman year, I have been completely immersed in the world of programming.

No, I have started to mess with APPs recently. It is really easy to develop an APP now. It can be completed with only JavaScript and a little HTML css technology. But the backend of the APP is different. After developing an APP and want to read some data into it, we have to develop a backend.

The laravel framework is my favorite PHP framework, bar none. Last year I used laravel to write my personal website, but the roughness made me blush. Okay, let’s not go into details, let’s go directly to the topic - install laravel first!

Basic environment configuration

For specific steps, please refer to the documentation directly. Laravel5.2 installation

My own environment is that wampsrver2.5 is installed on win10, but it is worth paying attention to. If you use wampsrver2.5, you need to change these places. Regarding this, please read my notes and click to preview
Tools: sublime
Browser: chrome (postman plug-in to be used)

About API

API (Application Programming Interface, Application Programming Interface) are predefined functions that provide applications and developers with the ability to access a set of routines based on certain software or hardware without accessing the source code, or Understand the details of the inner workings.
It should be noted that the API has its specific purpose, and we should know what it does. What should be entered when accessing the API. What should you get after accessing the API.

When starting to design an API, we should pay attention to these 8 points
The content here is excerpted from the master’s blog
Subsequent development plans will revolve around this. (Really great summary)

1.Restful design principles
2. API naming
3.API security
4.API returns data
5. Image processing
6. Returned prompt information
7. Online API testing documentation
8. When the app starts, call an initialization API to obtain the necessary information

Develop API with laravel

Just when I was worried about whether to start learning from scratch, I found this plug-in dingo/api, so let’s install it now!
First of all, you must download it correctly
Add the following content to the newly installed laravel composer.json

Then open cmd and execute

composer update

Add

to providers in config/app.php
App\Providers\OAuthServiceProvider::class,
Dingo\Api\Provider\LaravelServiceProvider::class,
LucaDegasperi\OAuth2Server\Storage\FluentStorageServiceProvider::class,
LucaDegasperi\OAuth2Server\OAuth2ServerServiceProvider::class,


Add

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


Modify the content in the app/Http/Kernel.php file

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,
];


Then execute

php artisan vendor:publish 
php artisan migrate


Add these configurations in the .env file

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

Modify the appconfigoauth2.php file

'grant_types' => [
  'password' => [
    'class' => 'League\OAuth2\Server\Grant\PasswordGrant',
    'access_token_ttl' => 604800,
    'callback' => '\App\Http\Controllers\Auth\PasswordGrantVerifier@verify',
  ],
],


Create a new service provider and create a new OAuthServiceProvider.php file under app/Providers with the following content

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()
  {
    //
  }
}


Then open routes.php and add relevant routes

//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())];
  });
});

Create BaseController.php and UsersController.php respectively with the following content

//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());
  }
}


Then create PasswordGrantVerifier.php under app/Http/Controllers/Auth/ with the following content

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;
  }
}


Open the oauth_client table of the database and add a new client data

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

Then it’s time to go to Happy Testing. The APIs to be tested here are

Add a new user

http://localhost/register

Read all user information

http://localhost/api/users

Only return information with user ID 4

http://localhost/api/users/4

Get access_token

http://localhost/oauth/access_token

Use the token value to obtain the time. Only when the token value is correct can the correct value be returned

http://localhost/api/time

Open PostMan

Articles you may be interested in:

  • Detailed explanation of usage examples of Trait in Laravel
  • Detailed explanation of the steps to register Facades in Laravel
  • Laravel implements automatic constructor Dependency injection method
  • How Laravel uses Caching to cache data to reduce database query pressure
  • Experience of learning PHP framework Laravel
  • Get the previous and next data in Laravel
  • Configuration file sharing for running PHP framework Laravel in Nginx
  • Yii’s method of using the migrate command to execute sql statements
  • YII Framework framework uses YIIC to quickly create a migrate usage example of YII applications Detailed explanation
  • Laravel executes the migrate command prompt: No such file or directory solution

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1110074.htmlTechArticleMaking APP interface (API) based on laravel, laravelapp interface api preface, why to do it and what to do My surname is Bai, and I am truly a novice in programming, but since...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn