梳理 Laravel Restful Http Api 实现过程

作者:admin 发布:2018-08-17 浏览:1512次

什么是 RESTful

RESTful 是一种软件设计风格。


为什么选择 RESTful

我认为一套接口应该尽量满足以下几个原则:

  • 安全可靠,高效,易扩展。

  • 简单明了,可读性强,没有歧义。

  • API 风格统一,调用规则,传入参数和返回数据有统一的标准。

具体过程

1、安装dingoApi

修改一下 composer.json

composer.json

...
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    },
    "minimum-stability" : "dev",
    "prefer-stable" : true}

增加了两句:

  • "minimum-stability" : "dev" ——设定的最低稳定性的版本为 dev 也就是可以依赖开发版本的扩展包;

  • "prefer-stable" : true —— Composer 优先使用更稳定的包版本。


$ composer require dingo/api:2.0.0-alpha2

先将 dingo 的配置文件 publish 出来

$ php artisan vendor:publish

执行成功后,我们会在 config 目录先看到 api.php 文件,打开文件我们可以看到所有的配置都是可以再 env 中修改的,

# dingo config
API_STANDARDS_TREE= //API_STANDARDS_TREE 有是三个值可选: 
                                          x 本地开发的或私有环境的
                                          prs 未对外发布的,提供给公司 app,单页应用,桌面应用等
                                          vnd 对外发布的,开放给所有用户
API_SUBTYPE=  //一般情况下是我们项目的简称
API_PREFIX=
#API_DOMAIN=
API_VERSION=API_DEBUG=

API_PREFIX 和 API_DOMAIN
对于一个项目,通过前缀或者子域名的方式来区分开 API 与 Web 等页面访问地址是十分有必要的。假如正式上线的项目地址为 www.larabbs.com,我们可以为 API 添加一个前缀

API_PREFIX=api

通过 www.larabbs.com/api 来访问 API。
或者有可能单独配置一个子域名api.larabbs.com

API_DOMAIN=api.larabbs.com

通过 api.larabbs.com 来访问 API。

特别要注意的是:前缀和子域名,两者有且只有一个

2、创建命名空间,新建基类

$ php artisan make:controller Api/Controller

所有API控制器都在 app/Http/Controllers/Api/ 目录下创建。

3、新增api路由

$api = app('Dingo\Api\Routing\Router');

$api->version('v1', [
    'namespace' => 'App\Http\Controllers\Api'
    ],function($api) {
      $api->get('index', 'TestController@index')->name('api.test.index');
});


4、构建控制器

php artisan make:controller Api/TestController

修改控制器文件

<?php

namespace App\Http\Controllers\Api;

use Illuminate\Http\Request;

class TestController extends Controller
{
    public function index()
    {
        return 'success';
    }
}

5、PostMan 里测试一下

image.png

Comments (0)