大家好,欢迎来到IT知识分享网。
1.概述
每个Slim应用程序实例都有一个响应对象。响应对象是Slim应用程序返回HTTP客户端的HTTP响应的抽象。虽然每个Slim应用程序都包含一个默认的响应对象,但\Slim\Http\Response该类是幂等的; 您可以随意(在中间件或Slim应用程序的其他位置)实例化该类,而不会影响整个应用程序。您可以使用以下命令获取对Slim应用程序的响应对象的引用:
<?php
$app = new \Slim\Slim();
$app->response;
HTTP响应有三个主要属性:
Status
Header
Body
响应对象提供了下面描述的辅助方法,可帮助您与这些HTTP响应属性进行交互。默认响应对象将返回带有text / html内容类型的200 OK HTTP响应。
2. Status
返回给客户端的HTTP响应将具有指示响应类型的状态代码(例如200 OK,400 Bad Request或500 Server Error)。您可以使用Slim应用程序的响应对象来设置HTTP响应的状态,如下所示:
<?php
$app->response->setStatus(400);
如果要返回不具有200 OK状态的HTTP响应,则只需设置响应对象的状态。您可以通过调用不带参数的相同方法轻松获取响应对象的当前HTTP状态,如下所示:
<?php
$status = $app->response->getStatus();
3.Headers
返回到HTTP客户端的HTTP响应将具有标头。HTTP标头是提供有关HTTP响应的元数据的键和值的列表。您可以使用Slim应用程序的响应对象来设置HTTP响应的标头。响应对象有一个公共属性headers,它是一个实例\Slim\Helper\Set; 这提供了一个简单的标准化接口来操作HTTP响应头。
<?php
$app = new \Slim\Slim();
$app->response->headers->set(‘Content-Type’, ‘application/json’);
您也可以从响应对象的headers属性中获取标头:
<?php
$contentType = $app->response->headers->get(‘Content-Type’);
如果不存在具有给定名称的标头,null则返回。您可以使用破折号或下划线指定带有大写,小写或混合大小写的标题名称。使用您最舒适的命名约定。
4. Body
返回给客户端的HTTP响应将具有正文。HTTP正文是传递给客户端的HTTP响应的实际内容。您可以使用Slim应用程序的响应对象来设置HTTP响应的正文:
<?php
$app = new \Slim\Slim();
// Overwrite response body
$app->response->setBody(‘Foo’);
// Append response body
$app->response->write(‘Bar’);
当您覆盖或附加响应对象的主体时,响应对象将根据新响应主体的bytesize 自动设置 Content-Length标头。
您可以像这样获取响应对象的主体:
<?php
$body = $app->response->getBody();
通常,您永远不需要使用setBody()或write()方法手动设置响应主体; 相反,Slim应用程序将为您执行此操作。每当您echo()在路由的回调函数 echo()内容时,都会在输出缓冲区中捕获’d内容,并在将HTTP响应返回给客户端之前附加到响应正文。
5.Cookies
Slim应用程序提供了帮助方法来发送带有HTTP响应的cookie。
1)设置Cookie
此示例演示如何使用Slim应用程序的setCookie()方法创建要与HTTP响应一起发送的HTTP cookie:
<?php
$app->setCookie(‘foo’, ‘bar’, ‘2 days’);
这将创建一个名为“foo”且值为“bar”的HTTP cookie,该cookie将在两天后到期。您还可以提供其他cookie属性,包括其路径,域,安全和httponly设置。Slim应用程序的 setCookie()方法使用与PHP的本机setCookie()函数相同的签名。
<?php
$app->setCookie(
$name,
$value,
$expiresAt,
$path,
$domain,
$secure,
$httponly
);
2)设置加密Cookie
您可以通过将应用程序的cookies.encrypt设置设置为,告诉Slim加密响应cookie true。当此设置true为时,Slim将在响应cookie返回到HTTP客户端之前自动对其进行加密。
以下是用于cookie加密的可用Slim应用程序设置:
<?php
$app = new \Slim\Slim(array(
‘cookies.encrypt’ => true,
‘cookies.secret_key’ => ‘my_secret_key’,
‘cookies.cipher’ => MCRYPT_RIJNDAEL_256,
‘cookies.cipher_mode’ => MCRYPT_MODE_CBC
));
3)删除Cookie
您可以使用Slim应用程序的deleteCookie()方法删除cookie 。这将在下一个HTTP请求之前从HTTP客户端删除cookie。这个方法接受相同的签名斯利姆应用程序的 setCookie()实例方法,而不该$expires说法。只需要第一个参数。
<?php
$app->deleteCookie(‘foo’);
如果您还需要指定路径和域:
<?php
$app->deleteCookie(‘foo’, ‘/’, ‘foo.com’);
您还可以进一步指定secure和httponly属性:
<?php
$app->deleteCookie(‘foo’, ‘/’, ‘foo.com’, true, true);
6.Helpers
响应对象提供了帮助方法来检查底层HTTP响应并与之交互。
Finalize
响应对象的finalize()方法返回一个数值数组[status, header, body]。状态是整数; 标头是可迭代的数据结构; 身体是一根绳子。如果要\Slim\Http\Response在Slim应用程序或其中间件中创建新对象,可以调用响应对象的 finalize()方法来生成基础HTTP响应的状态,标头和正文。
<?php
/**
* Prepare new response object
*/
$res = new \Slim\Http\Response();
$res->setStatus(400);
$res->write(‘You made a bad request’);
$res->headers->set(‘Content-Type’, ‘text/plain’);
/**
* Finalize
* @return [
* 200,
* [‘Content-type’ => ‘text/plain’],
* ‘You made a bad request’
* ]
*/
$array = $res->finalize();
Redirect重定向
响应对象的redirect()方法将设置响应状态及其返回3xx重定向响应所需的Location:头。
<?php
$app->response->redirect(‘/foo’, 303);
Status Introspection
响应对象提供其他帮助方法来检查其当前状态。以下所有方法都返回一个布尔值:
<?php
$res = $app->response;
//Is this an informational response?
$res->isInformational();
//Is this a 200 OK response?
$res->isOk();
//Is this a 2xx successful response?
$res->isSuccessful();
//Is this a 3xx redirection response?
$res->isRedirection();
//Is this a specific redirect response? (301, 302, 303, 307)
$res->isRedirect();
//Is this a forbidden response?
$res->isForbidden();
//Is this a not found response?
$res->isNotFound();
//Is this a client error response?
$res->isClientError();
//Is this a server error response?
$res->isServerError();
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/53433.html