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