资讯专栏INFORMATION COLUMN

FastD 最佳实践一: 构建 API

WalkerXu / 1737人阅读

摘要:最佳实践一构建是一个专门针对应用层而生的一个应用框架,提供良好的中间件,路由以及支持扩展运行,从而具体良好的性能条件。手动创建添加路由地址调用完成最第一个路由。缓存也是一个前置中间件,使用方式与日常操作保持一致。

FastD 最佳实践一: 构建 API

FastD 是一个专门针对 API 应用层而生的一个 PHP 应用框架,提供良好的中间件,路由以及支持 swoole 扩展运行,从而具体良好的性能条件。

创建项目
composer create-project fastd/dobee api -vvv

创建一个为 API 的项目。

运行第一个程序

进入命令行模式

php -S localhost:9876 -t web

访问 localhost:9876

{
    "msg":"hello dobee"
}
执行流程

点击: FastD设计详解

实现第一个路由
1. 创建"控制器"

通过命令行

php bin/console controller:create {name}

命令行会自动创建 CURD 多个操作方法,由开发者手动添加操作逻辑。

手动创建

MeController.php

 "janhuang"
        ]);
    }
}
2. 添加路由地址
get("/", "WelcomeController@welcome");
route()->get("/hello/{name}", "WelcomeController@sayHello");
route()->get("/who", "MeController@me");
3. 调用
curl -i http://127.0.0.1:9876/who

response

{
    "name": "janhuang"
}

完成最第一个路由。

给应用添加单元测试

我仍热认为测试是一个非常重要的环节,也是一个优秀开发者一个重要品质之一。

如果其中涉及数据库测试,可以参考: 数据库测试

request("GET", "/");
        $response = $this->app->handleRequest($request);
        $this->isSuccessful($response);
    }
}

可以给你的应用API添加格式各样的测试,来验证程序的有效性。

给 API 添加公共缓存

何为公共缓存?

公共缓存的灵感来自于 varnish,当用户发起非 GET 请求的时候,进行缓存处理并返回(如果有的话),其他请求一律穿透,交给底层处理。

缓存也是一个前置中间件,使用方式与日常操作保持一致。

文档: 中间件

config/app.php

 [
        // code
        "common.cache" => [FastDMiddlewareCacheMiddleware::class]
    ],
];

config/routes.php

get("/", "WelcomeController@welcome");
route()->get("/hello/{name}", "WelcomeController@sayHello");
route()->get("/who", "MeController@me")->withMiddleware("common.cache");

完成配置后,请求路由地址

curl -i http://localhost:9876/who

HTTP/1.1 200
Host: localhost:9876
Connection: close
X-Powered-By: PHP/7.0.0
Content-Type: application/json; charset=UTF-8
X-Cache: ee4d94f352cb03116b61ce9158720ebf
Expires: Tue, 08 Aug 2017 10:58:21 GMT

会产生 X-Cache 新的响应头,用于代表缓存生效。

Basic Auth

大部分 API 中,都需要对请求来源进行一定的鉴权处理,由于框架已经集成了简单的 Basic auth,使用方法与上述保持一致。

get("/", "WelcomeController@welcome");
route()->get("/hello/{name}", "WelcomeController@sayHello");
route()->get("/who", "MeController@me")->withMiddleware(["basic.auth", "common.cache"]);
为 API Server 加速

众所周知,swoole 为 PHP 提供了良好的性能体验和网络通信体验,而框架中也无缝整合 swoole,为框架、服务提供良好体验做了一个铺垫,现在,你只需要配置IP、端口、swoole常用配置,即可无痕启动以 swoole 服务器,为你的 API Server 进行加速处理。

config/server.php


 * @copyright 2016
 *
 * @link      https://www.github.com/janhuang
 * @link      http://www.fast-d.cn/
 */

return [
    "host" => "http://".get_local_ip().":9527",
    "class" => FastDServitizationServerHTTPServer::class,
    "options" => [
        "user" => "nobody",
        "group" => "nogroup",
        "pid_file" => __DIR__ . "/../runtime/pid/" . app()->getName() . ".pid",
        "log_file" => __DIR__ . "/../runtime/logs/" . app()->getName() . ".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配置

启动
php bin/server start
守护进程
php bin/server start -d
停止
php bin/server stop

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25611.html

相关文章

  • FastD 最佳实践三: 构建API网关

    摘要:我们需要将业务或服务放置在网关背后,由网关统一处理请求入口,本身由多个入口的处理变成了一个入口,由网关进行统一调度。网关负责来搞这些事情,你只需要知道网关就好了。 构建完成 API 服务,配置中心之后,架构图大致如下: showImg(https://segmentfault.com/img/remote/1460000010676395); 我们为何需要网关 引用 别人 的一句话: ...

    CoXie 评论0 收藏0
  • FastD 最佳实践五: 构建ELK日志分析

    摘要:点击前往中文地址先决条件简单安装下载地址下载或者其他都可以。版本处理方案新建格式日志文件。配置日志会随着配置进行生成,结果如下忽略上述日志内容,程序看得懂即可配置推送到需要根据业务场景进行配置,现在显示最简单的配置。 过去咱们开发中,对日志这个环节其实并不太重视,直到有一天,应用出现异常,这个时候才想起来日志,但很可惜,为时已晚。 咱们做运维和开发,除了救火,还需要防火,因此一些防范的...

    djfml 评论0 收藏0
  • FastD 最佳实践二: 构建配置中心

    摘要:过去专门做了一篇文档来构建配置中心,基于的配置中心。环境要求及构建步骤可参考搭建配置中心随着业务增长,部署的机器可能会随着增长,增加配置难度和维护难度。最终架构图如下无论扩展多少个业务应用,仅需要一个配置中心即可完成多处配置修改。 过去专门做了一篇文档来构建配置中心,基于 zookeeper 的配置中心。 环境要求及构建步骤可参考: QConf搭建配置中心 随着业务增长,部署的机器可能...

    noONE 评论0 收藏0
  • FastD 最佳实践四: 构建系统可视化监控

    摘要:的展示非常炫酷,绝对是运维提升逼格的一大利器。另外的可视化功能比强得多,而且以上版本将集成报警功能。它由写成,着力于高性能地查询与存储时序型数据。被广泛应用于存储系统的监控数据,行业的实时数据等场景。 原有监控系统 showImg(https://segmentfault.com/img/remote/1460000011082384); 整个系统以 Graphite (carbon ...

    khlbat 评论0 收藏0
  • FastD 最佳实践六: 为应用添加调用链监控 Zipkin

    摘要:调整配置文件在选项中,追加即可。有了以上系统常规监控日志集中分析应用调用链监控,我们的业务就可以变得更加透明,清晰,可控。相关文章最佳实践四构建系统可视化监控最佳实践五构建日志分析 zipkin是一个开放源代码分布式的跟踪系统,由Twitter公司开源,它致力于收集服务的定时数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。它的理论模型来自于Google Dappe...

    jayce 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<