madkom / simple-http
无并发功能的简单HTTP服务器
0.1.4
2017-03-07 10:55 UTC
This package is not auto-updated.
Last update: 2024-09-20 22:12:56 UTC
README
PHP中的无并发功能的简单HTTP服务器
安装
使用 Composer
composer require madkom/simple-http
使用方法
简单使用
namespace Madkom\SimpleHTTP; $server = new Server('0.0.0.0', $argc > 1 ? (int)$argv[1] : 80); $server->run(function (Request $request) : Response { return new Response(200, "Requested path: {$request->getPath()}"); });
高级
namespace Madkom\SimpleHTTP; $data = []; $cache = []; $server = new Server('0.0.0.0', $argc > 1 ? (int)$argv[1] : 80); $server ->get('/config', function (Request $request) use (&$data, &$cache) : Response { if (\array_key_exists('config', $cache)) { return $cache['config']; } return $cache['config'] = new JsonResponse(200, \array_keys($data)); }) ->get('/{name}', function (Request $request, string $name) use (&$data, &$cache) : Response { if (\array_key_exists($name, $cache)) { return $cache[$name]; } if (false === \array_key_exists($name, $data)) { return new Response(404); } return $cache[$name] = new JsonResponse(200, $data[$name]); }) ->put('/{name}', function (Request $request, string $name) use (&$data, &$cache) : Response { $json = \json_decode($request->getContent(), true); if (empty($json) && \json_last_error()) { return new Response(400, 'Malformed request: ' . \json_last_error_msg()); } $data[$name] = \array_key_exists($name, $data) ? \array_merge($data[$name], (array)$json) : $json; unset($cache[$name], $cache['status']); return new Response(204); }) ->post('/{name}', function (Request $request, string $name) use (&$data, &$cache) : Response { $json = \json_decode($request->getContent(), true); if (empty($json) && \json_last_error()) { return new Response(400, 'Malformed request: ' . \json_last_error_msg()); } $data[$name] = \array_key_exists($name, $data) ? \array_merge($data[$name], (array)$json) : $json; unset($cache['status']); return $cache[$name] = new JsonResponse(200, $data[$name]); }) ->run(function (Request $request, string $path) use (&$cache) : Response { if ($path === '/') { if (\array_key_exists('', $cache)) { return $cache['']; } $routes = \implode(\PHP_EOL, \array_map(function (Route $route) : string { return (string)$route; }, $this->router->getRoutes())); return $cache[''] = new Response(200, "<pre>{$routes}</pre>", [ 'Content-Type' => 'text/html', ]); } $this->log("Bad request({$request->getMethod()} {$request->getPath()})", "\033[0;33m"); return new Response(400); });
许可
MIT许可
版权所有 © 2017 Madkom
在此特此授予任何人获得本软件及其相关文档文件(“软件”)副本的权利,免费使用软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供者提供软件的人这样做,但受以下条件约束
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论该责任基于合同、侵权或其他方式,无论该责任源于、源自或与软件或软件的使用或其他方式有关。