动手做接口前应该注意哪些问题?

  • 接口认证
  • 接口参数格式字段
  • 接口版本 保留几个版本 什么情况下需要强制升级
  • 自动化测试问题
  • 模块化分
  • 接口统计问题
  • 隐式用户与显式用户
  • 对于线上的 API 必须保证所有接口正常且关闭所有的错误信息 => error_reporting(0),在输出JSON 时,不能有任何其它输出,否则,客户端将解析数据失败,app直接闪退

相关资料

API接口开发过程中的注意事项

APP接口版本兼容的问题
APP版本强制升级
APP升级二三事:APP升级场景及功能设计总结
App后端API设计版本问题

PHP / Laravel API 开发推荐阅读清单 有写关于Laravel的资料比较久

Laravel 的两个包 dingo/API nwidart/Laravel-modules 包使用的疑虑?

最近一个项目用 Laravel-5.6 匆匆的上了 其实 Laravel 也还不太熟
我想后面的项目也都用一个框架 然后项目以模块的方式开发 所以我就找了一个分模块的包 nwidart/laravel-modules

这个包最后模块也可以打成 composer 包 这样在项目的模块在开发的时候可以各负责自己的 更新的时候回也可以不用全量更新 那个模块更新就 composer 那个就行.

而接口我需要分版本 v1 v2 这样的 所以就找了这个包dingo/api 看一些评论说Transformers这个挺好用的 还没尝尝呢…

因为当时也在催着 急急忙忙就把项目上了 现在想优化下东西就感觉有点麻烦 程序目前也比较简单 我想把这两个撤掉还是继续研究这个两个包和 Laravel 的关系呢?

相关

v2ex-讨论
laravel-讨论

laravel-获取客户端IP

可以在控制器中获取, 那么如何在类中或自定义的函数中呢? 

laravel-5.6


控制器中获取

<?php
use Request; // 方式1 可以在自定义类中或函数中或取到IP
// use Illuminate\Http\Request; // 方式2
// use Symfony\Component\HttpFoundation\Request; // 方式3
....

    public function test(Request $request)
    {
        Request::ip(); // 方式1 可以静态获取

        //$request->getClientIps(); // 方式2、3 获取ip
        //$request->ip(); 

        //request()->ip(); // 方式4直接通过助手函数获取

    }
....

源码位置: /vendor/laravel/framework/src/Illuminate/Http/Request.php

laravel-内置函数-helpers

  • laravel-5.6

文件位置: /vendor/laravel/framework/src/Illuminate/Support/helpers.php

<?php

use Illuminate\Support\Arr;
use Illuminate\Support\Str;
use Illuminate\Support\Optional;
use Illuminate\Support\Collection;
use Illuminate\Support\Debug\Dumper;
use Illuminate\Contracts\Support\Htmlable;
use Illuminate\Support\HigherOrderTapProxy;

if (! function_exists('append_config')) {
    /**
     * Assign high numeric IDs to a config item to force appending.
     *
     * @param  array  $array
     * @return array
     */
    function append_config(array $array)
    {
        $start = 9999;

        foreach ($array as $key => $value) {
            if (is_numeric($key)) {
                $start++;

                $array[$start] = Arr::pull($array, $key);
            }
        }

        return $array;
    }
}

......

laravel二维码生成

在 config/app.php 注册serviceProvider

SimpleSoftwareIO\QrCode\QrCodeServiceProvider::class

在 config/app.php 添加Facades

'QrCode' => SimpleSoftwareIO\QrCode\Facades\QrCode::class

在Controller中引入

use SimpleSoftwareIO\QrCode\Facades\QrCode;

直接生成图片

$str = QrCode::size(300)->generate('Make me into a QrCode!');

将图片转成base64编码

$qrcode = base64_encode(QrCode::format('png')->size(300)->generate($encode));

相关资料

composer-simple-qrcode
github-simple-qrcode
Laravel中使用Simple Qrcode生成二维码
Class ‘QrCode’ not found Or add 'use SimpleSoftwareIO\QrCode\Facades\QrCode; '. If you wish to call it from your controller.