承接上文
第一天的时候,开启ws服务之后
php bin/swoft ws:start
可以通过ip加端口的方式进行访问
这是我们访问到的页面
我们知道要想学习一个新的框架,首先要知道的就是它的路由是怎么写的
文档上说,swoft框架使用的是注解,而不像laravel或者tp那样定义路由
先看一下 我们访问的首页是哪一个控制器中的哪一个方法
这个就是我们访问到的控制器和方法,因为我们是访问的http服务,所以在http服务里面找,根据经验在home控制器中(猜)
我们可以测试一下
然后再请求一次 记得重启服务
这看起来像是一个错误,是说我们应该返回一个http的相应,却返回了一个整型,暂且不管结果,总之,这个方法就是首页访问到的方法
注解
然后我们看一下注解
注解路由应该是Java中最常用到的,对于纯php开发可能了解的不多
文档中说的比较简单
首先就是要引入
use SwoftHttpServerAnnotationMappingController;
use SwoftHttpServerAnnotationMappingRequestMapping;
然后标注控制器 又叫类注解 需要在所有类注释后面
/** * Class Home * * @Controller(prefix="home") */
方法注解 位置在方法描述之后 其他注释之前
/** * 该方法路由地址为 /home/index * * @RequestMapping(route="/index", method="post") * * @param Request $request */
需要注意的是 注解的引号必须是双引号,单引号无效,报找不到路由的错误
完成注解之后需要重新启动服务
写个例子
新创建一个控制器 DemoController
<?php declare(strict_types=1); namespace AppHttpController; use SwoftHttpMessageResponse; use SwoftHttpServerAnnotationMappingController; use SwoftHttpServerAnnotationMappingRequestMapping; use function context; /** *Class DemoController * * * @Controller(prefix="demo") */ class DemoController { /** * * @RequestMapping(route="baozi", method="post") * *@return Response */ public function index(): Response { $response = context()->getResponse(); return $response->withContent("Hello Swoft2.0"); } }
根据注解 这个路由是 demo/baozi post请求方式
至于请求与响应 在核心组件中的httpserver 中有说明