lavarel 响应宏

lavarel 响应宏

  1. 宏的概念
    计算机里的宏是批量处理的意思。比如我们在进行文本编辑的时候,打错字会有回退的功能——control+z;但是这是我们的键盘操作,计算机在进行处理的时候是不能理解的,他必须对最近两次操作进行比对,然后撤销最近一次操作的修改,然后展示文本。计算机虽然不理解control+z是什么意思,但是一定有一个预定义是在他遇到control+z的时候进行上述的操作。这种根据预定义的规则对频繁使用的一系列命令和序列转换成对应的输出(面对计算机)的定义叫做叫做宏。这种替换一般都在预编译的时候进行,称为宏展开;其实windows的图形界面交互就是频繁的使用宏,进行一系列的计算机操作,这一点类似封装,对频繁使用的操作封装成函数,使用时直接输入简短的函数名和参数,服务器就自动完成一些列的操作;

  2. lavarel 的响应宏
    在编程的过程中可能经常用到一些特定的响应,这时候我们需要自定义响应宏把这些频繁的操作封装起来,再次使用的时候直接调用;
    (1)需要在\App\Providers 文件夹下新建一个服务提供者类似ResponseServiceProvider:

<?php

namespace App\Providers;

use Illuminate\Support\Facades\Response;
use Illuminate\Support\ServiceProvider;

class ResponseServiceProvider extends ServiceProvider
{
    /**
     * Perform post-registration booting of services.
     *
     * @return void
     */
    public function boot()
    {
        Response::macro('upper', function ($value) {
            return Response::make(strtoupper($value));
        });
    }

(2)macro方法接受的第一个参数就是定义的响应名称,第二个参数是一个闭包函数,响应宏的闭包在 ResponseFactory 实现类或辅助函数 response 中调用宏名称的时候被执行:

Route::get('upper/response', function() {
    return response()->upper('ppsty');
});

这样返回的响应就是响应宏处理后的结果;

3.如果我们在与前端的交互种需要特定的响应数据,
比如json格式的数据:
{'isError'=>true,'isSuccess'=>false,'error'=>$error,'code'=> $code,'data'=>[],}
(1)这样我们就需要对响应进行格式封装:

<?php

namespace App\Providers;

use Illuminate\Support\Facades\Response;
use App\Services\AjaxResponse;
use Illuminate\Support\ServiceProvider;

class ResponseServiceProvider extends ServiceProvider
{
    /**
     * Perform post-registration booting of services.
     *
     * @return void
     */
    public function boot()
    {
        Response::macro('toBeJson', function ($msg = [], $code = 200, $sStatus = 200, array $xHeaders = [], $sOptions = 0) {
            return response()->json(AjaxResponse::ajax($msg, $code), $sStatus, $xHeaders, $sOptions);
        });
    }
}

(2)对格式的操作需要新建一个AjaxResponse,把对格式的规范写到里面:

class AjaxResponse
{
public static function toBeJson($msg, $code = 400)
    {
        return [
            'isError' => false,
            'isSuccess'=> true,
            'msg'    => $msg,
            'code'     => $code,
            'data'     => [],
        ];
    }
}

这样返回的就是规范之后的响应返回;

https://blog.csdn.net/weixin_38674371/article/details/78459277?locationNum=1&fps=1

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113201.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PyCharm 自行整理的快捷键「建议收藏」

    PyCharm 自行整理的快捷键「建议收藏」工欲善其事,必先利其器,整理了下PyCharm最常用的快捷键可编辑版本下载:PyCharm快捷键(可编辑文件)

    2022年8月27日
    11
  • 【经验总结—2】:深度学习数据集下载网站总结[通俗易懂]

    【经验总结—2】:深度学习数据集下载网站总结[通俗易懂]数据集是深度学习的基础,深度学习模型的好坏与数据集有着直接关联,这里给出一些搜索数据集的优秀网站,记得要一键三连哦!!1.CVDatasetsontheweb一个非常全的数据集总结网站,里面包含了目标检测、目标分类、目标识别、目标跟踪、语义分割、人体姿态数据集等。2.YetAnotherComputerVisionIndexToDatasets(YACVID)全,啥都有!3.阿里天池数据集不得不说,阿里nb!数据集种类丰富,分类明晰!不止如此,阿里每年都

    2022年10月7日
    3
  • 华为OJ:2041 放苹果

    华为OJ:2041 放苹果

    2022年1月31日
    59
  • AngularJS所有版本下载地址

    AngularJS所有版本下载地址AngularJS官网本身采用AngularJS库构建,页面中的AngularJS库通过Google的CDN(内容分发网络)引入,所以国内访问会有问题。大家可以从下面地址获取AngularJS所以版本:https://code.angularjs.org/各种版本应有尽有,上图为证:补充说明:每个目录下有对应版本的压缩包,下载压缩包即可

    2022年7月25日
    15
  • CreateFileMapping函数[通俗易懂]

    为指定文件创建或打开命名或未命名的文件映射对象。要为物理内存指定NUMA节点,请参阅CreateFileMappingNuma。语法HANDLEWINAPICreateFileMapping(_In_HANDLEhFile,_In_opt_LPSECURITY_ATTRIBUTESlpAttributes,_In_DWORDflProtect,…

    2022年4月6日
    57
  • RPC协议及其python实例[通俗易懂]

    RPC协议及其python实例[通俗易懂]RPC协议在OpenStack中广泛使用,那么什么是RPC协议?做什么用的那?搜索了一阵,有了一个大概的印象。RPC是一个应用层的协议,分为client端和server端,server端写好了具体的函数实现,client端远程调用该函数,返回函数的结果。好处是很明显的:首先是可以直接利用别的程序的部分功能,这是最基础的。更重要的,利用rpc可以实现系统的分布式架构,一方面有些功能比

    2022年5月19日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号