前言官网地址:SW-X框架-专注于高性能便捷开发的PHP-SwooleX框架之星:https:///github.com/swoolex/swoolex1。什么是Restful组件?在SW-X中,Restful组件是对API返回值结构的封装支持。\x\Restful类支持定义返回值结构、Code->Msg关联、返回值强类型转换、抛出数据类型转换、响应请求头定义(跨域支持)。2、Restful设置API返回值的使用主要依赖于/restful/目录下的config.php配置项。默认初始化配置如下:'json',//默认返回值格式'default'=>['force'=>true,//是否强制返回值int|double|null类型转换'status'=>'code',//状态码字段名'tips'=>'msg',//描述字段名'result'=>'data',//结果集字段名'set'=>[],//默认结果集'headers'=>[],//响应头,可用于跨域设置(v2.5.23之前支持)],]其中default是默认的数据结构,当我们不使用\x\Restful::make('newsubscript')指定一个新的返回值结构时,默认使用这个结构。如果我们需要设置新的返回值结构,只需要复制默认的数组结构,将下标改成新的值即可。同时在/restful/目录下有一个default目录,是default对应的默认返回值结构,用于存放code状态码和msg状态描述。如果设置了新的数据结构,则需要将默认目录复制并重命名为对应的下标名称。我们看一下默认目录下的两个文件:Code状态码,/restful/default/code.php:0,//默认失败状态码'SUCCESS'=>1,//默认成功状态码];在实际应用中,我们只需要通过\x\Restful::statuscodekeyname()读取对应的状态码值即可,例如使用SUCCESS时,状态码使用\x\Restful::SUCCESS()。msgdescription,/restful/default/msg.php:['default'=>'requestfailed',//defaultvalue],//对应默认成功状态码的提示'SUCCESS'=>['default'=>'requestsuccess',//默认值'test'=>'testmsg',],];状态码描述是一个二维数组,一维下标需要对应状态码的下标,必须有一个二维下标名为default。这样设计的初衷是在实际应用中,同一个状态码可能有多个不同的描述,这样就可以通过指定下标来读取对应的描述,不指定时可以读取默认的下标。例如:usex\Restful;//读取的是SUCCESS['default']的描述,defaultRestful::code(Restful::SUCCESS())->callback();//指定msg下标,读取的SUCCESS['test']的描述是Restful::code(Restful::SUCCESS())->msg('test')->callback();3.更多Restful组件示例usex\Restful;//自定义msg内容>callback();//自定义抛出的输出类型returnRestful::type('xml')->code(Restful::SUCCESS())->callback();//设置抛出的数据集returnRestful::code(Restful::SUCCESS())->data(['user_id'=>1,'username'=>'SW-X',])->callback();//设置跨域支持returnRestful::code(Restful::SUCCESS())->header([//接口跨域设置'origin'=>'*',//接口数据请求类型'type'=>'',//接口跨域requesttype'methods'=>'POST,GET,OPTIONS,DELETE',//接口是否允许发送cookies'credentials'=>'true',//接口允许自定义请求头字段'headers'=>'Content-Type,Content-Length,Accept-Encoding,X-Requested-with,Origin,api_key',])->callback();4.在controller中使用Restful取回的简单例子上一篇我们修改了shop/select.php路由对应的controller代码:data(['user_id'=>'1','username'=>'SW-X',])->回调();}}输出结果:{"code":1,"msg":"请求成功","data":{"user_id":1,"username":"SW-X"}}5.枚举如果你不是用于Restful组件风格管理API接口的返回值,SW-X也支持Enum枚举定义。枚举类必须继承自\design\Enum基类,官方建议将它们统一定义在/box/enum/目录下,但不强制要求。接下来,我们将在该目录下创建一个ShopEnum类,代码如下:['user_id'=>1]]);结果集:array(3){["code"]=>int(500)["msg"]=>string(12)"ErrorException"["data"]=>array(1){["user_id"]=>int(1)}}//自定义数据结构:$ret=['code'=>ShopEnum::ERROR,'msg'=>ShopEnum::get(ShopEnum::ERROR),'data=>[],];7.在controller中使用枚举简单例子回到上一篇,我们修改shop/select.php路由对应的controller代码:['user_id'=>1]]);返回$this->fetch(dd($array));}}输出结果:array(3){["code"]=>int(500)["msg"]=>string(12)"ErrorException"["data"]=>array(1){["user_id"]=>int(1)}}
