Heim Backend-Entwicklung PHP-Tutorial 基于laravel制作APP接口(API)_PHP

基于laravel制作APP接口(API)_PHP

May 28, 2016 am 11:48 AM
app接口 laravel

前期准备

前言,为什么做以及要做个啥
本人姓小名白,不折不扣编程届小白一名,但是自从大一那会儿接触到编程这件奇妙的事情,就完完全全的陷入的程序的世界。

这不,最近又开始折腾APP了,话说现在开发一款APP真是容易,只用JavaScript和一点点HTML+css技术就可以完成。但是做APP的后台就不一样了。开发了APP,想让读点数据进去,那我们就要去开发个后台了。

laravel框架,是我最喜欢的PHP框架了,没有之一。去年就曾经用laravel写了我的个人网站但粗糙程度让我十分脸红,好了不扯了,让我们直接进入主题——先安装laravel吧!

基础环境配置

具体的步骤直接看文档吧laravel5.2安装

我自己的环境是win10上面安装了wampsrver2.5,但是这里值得好好注意一下,用wampsrver2.5了话,这几个地方要改动一下。关于这个请看我的笔记点击预览
工具:sublime
浏览器:chrome(要用到的插件postman)

关于API

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
需要注意的是:API有它的具体用途,我们应该清楚它是干啥的。访问API的时候应该输入什么。访问过API过后应该得到什么。

在开始设计API时,我们应该注意这8点
这里的内容摘抄自大神的博客
后续的开发计划就围绕着这个进行了。(真心好棒的总结)

1.Restful设计原则
2.API的命名
3.API的安全性
4.API返回数据
5.图片的处理
6.返回的提示信息
7.在线API测试文档
8.在app启动时,调用一个初始化API获取必要的信息

用laravel开发API

就在我上愁着要不要从零开始学习的时候,找到了这个插件dingo/api那么现在就来安装吧!
首先一定是下载的没错
在新安装好的laravel的composer.json加入如下内容

然后打开cmd执行

composer update
Nach dem Login kopieren

在config/app.php中的providers里添加

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


Nach dem Login kopieren

在aliases里添加

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


Nach dem Login kopieren

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


Nach dem Login kopieren

然后执行

php artisan vendor:publish 
php artisan migrate


Nach dem Login kopieren

在.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

修改app\config\oauth2.php文件

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


Nach dem Login kopieren

新建一个服务提供者,在app/Providers下新建OAuthServiceProvider.php文件内容如下

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


Nach dem Login kopieren

然后打开routes.php添加相关路由

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

Nach dem Login kopieren

分别创建BaseController.php和UsersController.php内容如下

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


Nach dem Login kopieren

随后在app/Http/Controllers/Auth/下创建PasswordGrantVerifier.php内容如下

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


Nach dem Login kopieren

打开数据库的oauth_client表新增一条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');
Nach dem Login kopieren

随后的就是去愉快的测试了,这里要测试的API有

新增一个用户

http://localhost/register

读取所有用户信息

http://localhost/api/users

只返回用户id为4的信息

http://localhost/api/users/4

获取access_token

http://localhost/oauth/access_token

利用token值获得时间,token值正确才能返回正确值

http://localhost/api/time

打开PostMan

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP vs. Flutter: Die beste Wahl für die mobile Entwicklung PHP vs. Flutter: Die beste Wahl für die mobile Entwicklung May 06, 2024 pm 10:45 PM

PHP und Flutter sind beliebte Technologien für die mobile Entwicklung. Flutter zeichnet sich durch plattformübergreifende Funktionen, Leistung und Benutzeroberfläche aus und eignet sich für Anwendungen, die eine hohe Leistung, plattformübergreifende und benutzerdefinierte Benutzeroberfläche erfordern. PHP eignet sich für serverseitige Anwendungen mit geringerer Leistung und nicht plattformübergreifend.

Wie verwende ich objektrelationales Mapping (ORM) in PHP, um Datenbankoperationen zu vereinfachen? Wie verwende ich objektrelationales Mapping (ORM) in PHP, um Datenbankoperationen zu vereinfachen? May 07, 2024 am 08:39 AM

Datenbankoperationen in PHP werden durch ORM vereinfacht, das Objekte in relationalen Datenbanken abbildet. EloquentORM in Laravel ermöglicht Ihnen die Interaktion mit der Datenbank mithilfe einer objektorientierten Syntax. Sie können ORM verwenden, indem Sie Modellklassen definieren, Eloquent-Methoden verwenden oder in der Praxis ein Blog-System erstellen.

Analyse der Vor- und Nachteile von PHP-Unit-Test-Tools Analyse der Vor- und Nachteile von PHP-Unit-Test-Tools May 06, 2024 pm 10:51 PM

Analyse des PHP-Unit-Test-Tools: PHPUnit: Geeignet für große Projekte, bietet umfassende Funktionalität und ist einfach zu installieren, kann jedoch ausführlich und langsam sein. PHPUnitWrapper: geeignet für kleine Projekte, einfach zu verwenden, optimiert für Lumen/Laravel, verfügt jedoch über eingeschränkte Funktionalität, bietet keine Code-Coverage-Analyse und hat begrenzte Community-Unterstützung.

Laravel – Handwerkerbefehle Laravel – Handwerkerbefehle Aug 27, 2024 am 10:51 AM

Laravel – Artisan Commands – Laravel 5.7 bietet eine neue Möglichkeit, neue Befehle zu behandeln und zu testen. Es enthält eine neue Funktion zum Testen von Handwerkerbefehlen und die Demonstration wird unten erwähnt?

Vergleich der neuesten Versionen von Laravel und CodeIgniter Vergleich der neuesten Versionen von Laravel und CodeIgniter Jun 05, 2024 pm 05:29 PM

Die neuesten Versionen von Laravel 9 und CodeIgniter 4 bieten aktualisierte Funktionen und Verbesserungen. Laravel9 übernimmt die MVC-Architektur und bietet Funktionen wie Datenbankmigration, Authentifizierung und Template-Engine. CodeIgniter4 nutzt die HMVC-Architektur, um Routing, ORM und Caching bereitzustellen. In Bezug auf die Leistung sorgen das auf Dienstanbietern basierende Designmuster von Laravel9 und das leichte Framework von CodeIgniter4 für eine hervorragende Leistung. In praktischen Anwendungen eignet sich Laravel9 für komplexe Projekte, die Flexibilität und leistungsstarke Funktionen erfordern, während CodeIgniter4 für schnelle Entwicklung und kleine Anwendungen geeignet ist.

Wie vergleichen sich die Datenverarbeitungsfunktionen in Laravel und CodeIgniter? Wie vergleichen sich die Datenverarbeitungsfunktionen in Laravel und CodeIgniter? Jun 01, 2024 pm 01:34 PM

Vergleichen Sie die Datenverarbeitungsfunktionen von Laravel und CodeIgniter: ORM: Laravel verwendet EloquentORM, das eine relationale Klassen-Objekt-Zuordnung bereitstellt, während CodeIgniter ActiveRecord verwendet, um das Datenbankmodell als Unterklasse von PHP-Klassen darzustellen. Abfrage-Builder: Laravel verfügt über eine flexible verkettete Abfrage-API, während der Abfrage-Builder von CodeIgniter einfacher und Array-basiert ist. Datenvalidierung: Laravel bietet eine Validator-Klasse, die benutzerdefinierte Validierungsregeln unterstützt, während CodeIgniter über weniger integrierte Validierungsfunktionen verfügt und eine manuelle Codierung benutzerdefinierter Regeln erfordert. Praxisfall: Beispiel einer Benutzerregistrierung zeigt Lar

Was ist einsteigerfreundlicher: Laravel oder CodeIgniter? Was ist einsteigerfreundlicher: Laravel oder CodeIgniter? Jun 05, 2024 pm 07:50 PM

Für Anfänger bietet CodeIgniter eine sanftere Lernkurve und weniger Funktionen, deckt aber die Grundbedürfnisse ab. Laravel bietet einen größeren Funktionsumfang, weist jedoch eine etwas steilere Lernkurve auf. In Bezug auf die Leistung schneiden sowohl Laravel als auch CodeIgniter gut ab. Laravel verfügt über eine umfangreichere Dokumentation und aktive Community-Unterstützung, während CodeIgniter einfacher und leichtgewichtiger ist und über starke Sicherheitsfunktionen verfügt. Im praktischen Fall der Erstellung einer Blogging-Anwendung vereinfacht EloquentORM von Laravel die Datenmanipulation, während CodeIgniter mehr manuelle Konfiguration erfordert.

PHP-Code-Unit-Tests und Integrationstests PHP-Code-Unit-Tests und Integrationstests May 07, 2024 am 08:00 AM

Leitfaden zum Testen von PHP-Einheiten und -Integrationen Unit-Tests: Konzentrieren Sie sich auf eine einzelne Code- oder Funktionseinheit und verwenden Sie PHPUnit, um Testfallklassen zur Überprüfung zu erstellen. Integrationstests: Achten Sie darauf, wie mehrere Codeeinheiten zusammenarbeiten, und verwenden Sie die Methoden setUp() und TearDown() von PHPUnit, um die Testumgebung einzurichten und zu bereinigen. Praktischer Fall: Verwenden Sie PHPUnit, um Unit- und Integrationstests in Laravel-Anwendungen durchzuführen, einschließlich der Erstellung von Datenbanken, dem Starten von Servern und dem Schreiben von Testcode.

See all articles