zoukankan      html  css  js  c++  java
  • composer 包 slim使用案例,一个简单的路由解决方案

    nginx配置文件修改

    location / {
            try_files $uri /index.php$is_args$args;
        }

    设置好nginx伪静态,把所有的请求方式都转向到index.php文件

    然后在目录里建index.php文件

    在目录里安装如下三个composer包

    composer require slim/slim guzzlehttp/psr7 http-interop/http-factory-guzzle

    然后打开index.php文件,修改内容为如下:

    <?php
    
    use PsrHttpMessageResponseInterface as Response;
    use PsrHttpMessageServerRequestInterface as Request;
    use SlimFactoryAppFactory;
    
    require "vendor/autoload.php";
    
    $app = AppFactory::create();
    
    // Define app routes
    $app->get('/hello/{name}', function (Request $request, Response $response, $args) {
        $name = $args['name'];
        $response->getBody()->write("Hello, $name");
        return $response;
    });
    $app->get('/welcome/{name}', function (Request $request, Response $response, $args) {
        $name = $args['name'];
        $response->getBody()->write("welcome, $name");
        return $response;
    });
    $app->get('/json',function (Request $request, Response $response){
        $query = $request->getQueryParams();
    
        $data = array('name' => $query['name'] ?? 'null', 'age' => 40);
        $payload = json_encode($data);
    
        $response->getBody()->write($payload);
        return $response
            ->withHeader('Content-Type', 'application/json');
    });
    $app->get('/form',function (Request $request, Response $response){
        $html = <<<EOT
    <html>
    <head>form demo
    </head>
    <body>
        <form action="/action" method="post" enctype="multipart/form-data">
            <input type="text" name="name" value="tu6ge" />
            <input type="text" name="language" value="php" />
            <input type="file" name="avatar" />
            <button type="submit" >submit</button>
        </form>
    </body>
    </html>
    EOT;
        $response->getBody()->write($html);
        return $response;
    });
    $app->post('/action',function (Request $request, Response $response){
        $info = $request->getParsedBody();
        print_r($info);
        $files = $request->getUploadedFiles();
        foreach ($files as $file){
            $file->moveTo('./upload/'.date('H-i-s').'.txt');
        }
        $response->getBody()->write('file save success');
        return $response;
    });
    
    // Run app
    $app->run();

    输入对应的路由,比如/hello/tu6ge即可访问对应的内容

  • 相关阅读:
    6. (在第五步的基础上展开)实现模板推送发送
    5. (全局唯一接口调用凭据)获取Access token
    3. openid的获取
    2. 验证服务器地址的有效性
    Java后端开发规范
    4. (自定义菜单和删除全部菜单)Springboot读取静态json文件
    Docker私有仓库搭建与部署
    Docker容器基础学习一
    运维日志切割--logrotate
    zookeeper学习
  • 原文地址:https://www.cnblogs.com/tu6ge/p/11373347.html
Copyright © 2011-2022 走看看