当前位置: 首页 > 后端技术 > PHP

FastD最佳实践一:构建API

时间:2023-03-29 20:25:39 PHP

FastD最佳实践一:构建APIFastD是专门为API应用层设计的PHP应用框架,提供良好的中间件、路由和支持swoole扩展运行,使其具备特定的良好性能条件.创建项目composercreate-projectfastd/dobeeapi-vvv为API创建一个项目。运行第一个程序进入命令行模式php-Slocalhost:9876-twebaccesslocalhost:9876{"msg":"hellodobee"}执行过程点击:FastD设计详解实现第一个路由1.创建“controller""通过命令行phpbin/consolecontroller:create{name}命令行会自动创建多个CURD操作方法,开发者手动添加操作逻辑。手动创建MeController.php'janhuang']);}}2.添加路由地址get('/','WelcomeController@welcome');route()->get('/hello/{name}','WelcomeController@sayHello');route()->get('/who','MeController@me');3.callcurl-ihttp://127.0.0.1:9876/whoresponse{"name":"janhuang"}完成第一条路线为应用程序添加单元测试我仍然认为测试是一个非常重要的部分,其中之一这优秀开发人员的重要素质。如果涉及到数据库测试,可以参考:数据库测试request('GET','/');$response=$this->app->handleRequest($request);$this->isSuccessful($response);}}您可以向您的应用程序API添加各种格式的测试,以验证程序的有效性。将公共缓存添加到API什么是公共缓存?公共缓存的灵感来自Varnish。当用户发起一个非GET请求时,它会被缓存并返回(如果有的话)。其他的请求都会通过,交给底层处理。缓存也是一个前置中间件,其用法与日常操作一致。文档:中间件config/app.php[//code'common.cache'=>[\FastD\Middleware\CacheMiddleware::class]],];config/routes.phpget('/','WelcomeController@welcome');route()->get('/hello/{name}','WelcomeController@sayHello');route()->get('/who','MeController@me')->withMiddleware('common.cache');配置完成后请求路由地址curl-ihttp://localhost:9876/whoHTTP/1.1200Host:localhost:9876Connection:closeX-Powered-By:PHP/7.0.0Content-Type:application/json;charset=UTF-8X-Cache:ee4d94f352cb03116b61ce9158720ebfExpires:Tue,08Aug10:2058:GMT会生成一个新的X-Cache的响应头,用来表示缓存有效。在BasicAuth的大部分API中,都需要对请求的来源进行一定的鉴权处理。由于框架已经集成了简单的BasicAuth,所以使用方法和上面一致。get('/','WelcomeController@welcome');route()->get('/hello/{name}','WelcomeController@sayHello');route()->get('/who','MeController@me')->withMiddleware(['basic.auth','common.cache']);加速APIServer众所周知,swoole为PHP提供了良好的性能体验和网络通信体验,框架也无缝集成了swoole,为框架和服务提供良好的体验铺平了道路。现在,你只需要配置IP、端口和swoole常用配置,就可以为你的APIServer无缝启动swooleserver。加快处理速度。config/server.php*@copyright2016**@linkhttps://www.github.com/janhuang*@linkhttp://www.fast-d.cn/*/return['host'=>'http://'.get_local_ip().':9527','class'=>\FastD\Servitization\Server\HTTPServer::class,'options'=>['user'=>'nobody','group'=>'nogroup','pid_file'=>__DIR__。'/../runtime/pid/'。应用程序()->获取名称()。'.pid','log_file'=>__DIR__。'/../runtime/logs/'。应用程序()->获取名称()。'.pid','log_level'=>5,'worker_num'=>10,'task_worker_num'=>20,],'processes'=>[],'listeners'=>[],];get_local_ip函数是针对默认或者本地内网ip,如果你的API是对外开放的,请修改为你的外网ip或者0.0.0.0。options参数是一个swoole扩展配置参数。请参考:swoole配置启动phpbin/server启动守护进程phpbin/serverstart-dstopphpbin/serverstop