yosymfony / httpserver
一个简单的HTTP服务器
v1.3.0
2017-01-14 18:23 UTC
Requires
- php: >=5.5.5
- react/http: 0.4.*
- symfony/http-foundation: ^2.7|^3.0
- symfony/http-kernel: ^2.7|^3.0
README
HttpServer 是一个简单的 HTTP 服务器,由 REACT 提供。
安装
使用 Composer 安装 Yosyfmony HttpServer 包
将以下内容添加到您的 composer.json
并运行 composer update
。
"require": {
"yosymfony/httpserver": "1.3.x"
}
有关包的更多信息,请参阅 Packagist。
如何使用?
很简单。RequestHandler 需要一个函数来管理每个连接
$requestHandler = new RequestHandler(function($request) {
return 'Hi Yo! Symfony';
});
$server = new HttpServer($requestHandler);
$server->start();
// go to http://localhost:8080
如何配置 RequestHandler?
您可以配置端口和主机以监听请求:
$requestHandler = new RequestHandler( function($request) {
return 'Hi Yo! Symfony';
});
$requestHandler->listen(8081, '127.0.0.1');
默认值
- 端口: 8080
- 主机: 0.0.0.0
处理器函数
处理器函数接收一个唯一参数来描述请求。默认情况下,此参数是类型为 React\Http\Request 的对象。如果您想接收 Symfony HttpFoundation 请求,则需要激活此模式
$requestHandler = new RequestHandler( function($request) {
return 'Hi Yo! Symfony';
});
$requestHandler
->listen(8081, '127.0.0.1')
->enableHttpFoundationRequest(); // $requestHandler uses fluent interface
如果您想使用类似于 Symfony、Silex 或 Laravel 的 HttpKernelInterface,可以像这样使用 HttpKernelRequestHandler
处理器
// Create our kernel.
$httpKernel = new ExampleHttpKernel();
$options = array(
'host' => '127.0.0.1',
'port' => 8081,
);
// Wrap it with the RequestHandler.
$handler = new \Yosymfony\HttpServer\HttpKernelRequestHandler($httpKernel, $options);
// Start the server using the RequestHandler.
$server = new \Yosymfony\HttpServer\HttpServer($handler);
$server->start();
响应
最简单的用例是返回一个字符串。默认情况下,响应头中的 Content-Type
值为 text/plain
$requestHandler = new RequestHandler( function($request) {
return 'Hi Yo! Symfony';
});
如果您想自定义状态码和响应头,可以返回一个数组,如下所示
requestHandler = new RequestHandler( function($request) {
return [
'content' => '<?xml version="1.0" encoding="UTF-8"?><root>Hi Yo! Symfony</root>',
'headers' => ['Content-Type' => 'text/xml'],
'status_code' => 200
];
});
制作响应的最佳方式是使用 Symfony HttpFoundation 响应
use Symfony\Component\HttpFoundation\Response;
requestHandler = new RequestHandler( function($request) {
return new Response(
'Hi Yo! Symfony',
Response::HTTP_OK,
array('content-type' => 'text/html')
);
});
单元测试
您可以使用以下命令运行单元测试
$ cd your-path/vendor/yosymfony/httpserver
$ composer.phar install --dev
$ phpunit