yosymfony/httpserver

一个简单的HTTP服务器

v1.3.0 2017-01-14 18:23 UTC

This package is auto-updated.

Last update: 2024-09-13 03:44:12 UTC


README

HttpServer 是一个简单的 HTTP 服务器,由 REACT 提供。

Build Status

安装

使用 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