Table des matières
HTTP 响应
基础响应
响应对象
附加响应头
添加cookie到响应
其它响应类型
视图响应
JSON响应
文件下载
文件响应
重定向
重定向至命名路由
重定向至控制器行为
重定向并闪存session
响应宏
Maison développement back-end tutoriel php laravel基础教程 -- 响应

laravel基础教程 -- 响应

Jun 23, 2016 pm 01:07 PM

HTTP 响应

基础响应

所有的路由和控制器都应该返回某种响应发送回给用户的浏览器,laravel提供了多种不同的方式来返回响应。最基本的响应就是简单的在路由或控制器中返回字符串:

Route::get('/', function () {  return 'Hello World';});
Copier après la connexion

这里返回的字符串会被laravel自动的转换为HTTP响应发送出去.

响应对象

大多数时候,路由或者控制器的行为都应该返回Illuminate\Http\Response实例或者view。Response实例允许你便利的对响应头和响应的状态进行定制化.一个Response实例继承自Symfony\Component\HttpFoundation\Response类,该类提供了多种方法来生成一个HTTP响应:

use Illuminate\Http\Response;Route::get('home', function () {  return (new Response($content, $status))                ->header('Content-Type', $value); });
Copier après la connexion

laravel也提供了便利的response全局帮助函数:

Route::get('home', function () {  return response($content, $status)            ->header('Content-Type', $value);});
Copier après la connexion

所有可以使用的Response实例的方法,你可以查看 API 文档 和 Symfony API文档.

附加响应头

Response实例的大多数方法都是允许进行链式调用的,你可以使用链式调用来流利的构建响应。例如,你可以使用header方法去添加多种响应头在其被发送到用户客户端之前:

return response($content)         ->header('Content-Type', $type)         ->header('X-Header-One', 'Header Value')         ->header('X-Header-Two', 'Header Value');
Copier après la connexion

或者你可以使用withHeaders方法来通过指定的数组添加请求头到响应:

return response($content)         ->withHeaders([           'Content-Type' => $type,           'X-Header-One' => 'Header Value',           'X-Header-Two' => 'Header value'         ]);
Copier après la connexion

添加cookie到响应

Response实例的cookie可以简单的追加cookie信息到响应。例如,你可以使用cookie方法来生成cookie并附加到响应中:

return response($content)         ->header('Content-Type', $type)         ->cookie('name', 'value');
Copier après la connexion

cookie方法允许你添加额外的参数来进一步定制化你的cookie属性:

->cookie($name, $value, $minutes, $path, $domain, $secure, $httpOnly)
Copier après la connexion

默认的,laravel中所有的cookie都是经过签证加密的,所以客户端的用户是没办法修改或者解读的.所以如果你想在生成某些cookie时,禁用默认的加密,你需要在App\Http\Middleware\EncreyptCookies中间件的$except属性中进行追加:

protected $except = [  'cookie_name'];
Copier après la connexion

其它响应类型

帮助方法response也可以用来便利的生成其它类型的响应实例,如果你使用response帮助方法不传递任何参数,那么它会返回一个实现了Illuminate\Contracts\Routing\ResponseFactory contract的实例。该契约提供了多种有用的方法来生成响应.

视图响应

如果你想控制响应的响应头与状态,并且你也需要返回一个视图作为响应的内容,那么你可以使用view方法:

return response()         ->view('hello', $data)         ->header('Content-Type', $type);
Copier après la connexion

当然,如果你并不需要定制化响应的状态或者响应头,那么你可以直接使用全局帮助方法view。

JSON响应

json方法会自动的设置响应头的Content-Type为application/json,以及使用json_encode方法将提供的数组转换为JSON:

return response()->json(['name' => 'Abigail', 'state' => 'CA']);
Copier après la connexion

如果你想要生成jsonp的响应,那么你可以使用json方法然后附加setCallback方法:

return response()         ->json(['name' => 'Abigail', 'state' => 'CA'])         ->setCallback($request->input('callback'));
Copier après la connexion

文件下载

download方法可以在返回一个强制用户端浏览器进行下载指定路径文件的响应。download方法也允许传递第二个参数作为浏览器下载时的文件名,你也可以传递http响应头数组作为第三个参数:

return response()->download($pathToFile);return response()->download($pathToFile, $name, $headers);
Copier après la connexion

注意:Symfony HttpFoundation需要被下载的文件有一个ASCII文件名

文件响应

file方法允许你在浏览器直接显示image或pdf类型的文件来代替直接下载。该方法接收文件路径作为第一个参数,也可以接收HTTP响应头数组作为第二个参数:

return response()->file($pathToFile);return response()->file($pathToFile, $headers);
Copier après la connexion

重定向

重定向响应是一个Illuminate\Http\RedirectResponse类的实例,它包含了所有重定向到指定URI所需要的响应头信息。laravel提供了多种方式去生成重定向实例.最简单的方式莫过于使用全局帮助方法redirect:

Route::get('dashboard', function () {  return redirect('home/dashboard'); });
Copier après la connexion

有时候你需要将用户重定向到上一次请求的地址,那么你可以使用全局帮助方法back。因为这里用到了session,所以你必须要保证你的路由使用了session中间件,默认的laravel的路由都被包裹在web路由组中,web中间件组中已经包含了session中间件:

Route::post('user/profile', function () {  // Validate the request...  return  back()->withInput();});
Copier après la connexion

重定向至命名路由

当你使用redirect方法而不传递任何参数时,laravel将返回Illuminated\Routing\Redirector的一个实例,该实例允许你使用一些方法来处理重定向信息,例如,为了生成重定向到命名路由,你可以使用route方法:

return redirect()->route('login');
Copier après la connexion

如果命名路由也含有参数,那么你可以传递第二个参数到route方法:

return redirect()->route('profile', ['id' => 1]);
Copier après la connexion

如果你需要重定向的路由是使用Eloquent模型的id作为参数识别的路由,那么你可以直接在route方法中传递用户实例,它会自动被解析到id:

return redirect()->route('profile', [$user]);
Copier après la connexion

重定向至控制器行为

你也可以生成重定向信息到控制器的某个行为.你可以简单的通过action方法传递控制器名称和控制器行为来做到这些.你应该注意,你并不需要特别的指出控制器的全部命名空间,因为laravel的RouteServiceProvider已经自动的设置了默认的命名空间:

return redirect()->action('HomeController@index');
Copier après la connexion

当然,如果你的控制器行为也接收其他的参数,你同样可以在action方法中传递第二个参数:

return redirect()->action('UserController@profile', ['id' => 1]);
Copier après la connexion

重定向并闪存session

你可以通过RedirectResponse实例的链式调用来做到在生成重定向信息的同时闪存seession数据,这在执行行为之后存储消息状态的场景尤其有用:

Route::post('user/profile', function () {  // Update the user's profile...  return redirect('dashboard')->with('status', 'profile updated'); });
Copier après la connexion

当然,在用户重定向到新页面时,你是可以访问到闪存的会话信息的,例如,在blade模板中,你可以这么使用:

@if (session('status'))   <div class="alert alert-success">    {{ session('status')}}  </div>@endif
Copier après la connexion

响应宏

如果你想自定义某种可复用的响应,你可以使用Response facade的 macro方法或者提供Illuminate\Contracts\Routing\ResponseFactory的一个实现:

<?phpnamespace App\Providers;use Response;use Illuminate\Support\ServiceProvider;class ResponseMacroServiceProvider extends ServiceProvider {  public function boot() {    Response::macro('caps', function ($value) {      return Response::make(strtoupper($value));    });   }}
Copier après la connexion

macro方法接收一个别名作为第一个参数,接收一个闭包作为第二个参数。闭包会在访问ResponseFactory实现的实例的动态属性macro别名时执行,或者通过全局帮助方法response:

return response()->caps('foo');
Copier après la connexion
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium) 11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium) Mar 03, 2025 am 10:49 AM

Les longues URL, souvent encombrées de mots clés et de paramètres de suivi, peuvent dissuader les visiteurs. Un script de raccourcissement d'URL offre une solution, créant des liens concis idéaux pour les médias sociaux et d'autres plateformes. Ces scripts sont utiles pour les sites Web individuels

Travailler avec les données de session Flash dans Laravel Travailler avec les données de session Flash dans Laravel Mar 12, 2025 pm 05:08 PM

Laravel simplifie la gestion des données de session temporaires à l'aide de ses méthodes de flash intuitives. Ceci est parfait pour afficher de brefs messages, alertes ou notifications dans votre application. Les données ne persistent que pour la demande ultérieure par défaut: $ demande-

Construisez une application React avec un Laravel Back End: Partie 2, React Construisez une application React avec un Laravel Back End: Partie 2, React Mar 04, 2025 am 09:33 AM

Il s'agit de la deuxième et dernière partie de la série sur la construction d'une application React avec un back-end Laravel. Dans la première partie de la série, nous avons créé une API RESTful utilisant Laravel pour une application de liste de base sur le produit. Dans ce tutoriel, nous serons Dev

Misque de réponse HTTP simplifié dans les tests Laravel Misque de réponse HTTP simplifié dans les tests Laravel Mar 12, 2025 pm 05:09 PM

Laravel fournit une syntaxe de simulation de réponse HTTP concise, simplifiant les tests d'interaction HTTP. Cette approche réduit considérablement la redondance du code tout en rendant votre simulation de test plus intuitive. L'implémentation de base fournit une variété de raccourcis de type de réponse: Utiliser illuminate \ support \ faades \ http; Http :: faux ([[ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST Mar 14, 2025 am 11:42 AM

L'extension PHP Client URL (CURL) est un outil puissant pour les développeurs, permettant une interaction transparente avec des serveurs distants et des API REST. En tirant parti de Libcurl, une bibliothèque de transfert de fichiers multi-protocol très respectée, PHP Curl facilite Efficient Execu

12 meilleurs scripts de chat PHP sur Codecanyon 12 meilleurs scripts de chat PHP sur Codecanyon Mar 13, 2025 pm 12:08 PM

Voulez-vous fournir des solutions instantanées en temps réel aux problèmes les plus pressants de vos clients? Le chat en direct vous permet d'avoir des conversations en temps réel avec les clients et de résoudre leurs problèmes instantanément. Il vous permet de fournir un service plus rapide à votre personnalité

Annonce de l'enquête sur la situation en 2025 PHP Annonce de l'enquête sur la situation en 2025 PHP Mar 03, 2025 pm 04:20 PM

L'enquête sur le paysage PHP 2025 étudie les tendances actuelles de développement du PHP. Il explore l'utilisation du cadre, les méthodes de déploiement et les défis, visant à fournir des informations aux développeurs et aux entreprises. L'enquête prévoit la croissance de la PHP moderne versio

Notifications à Laravel Notifications à Laravel Mar 04, 2025 am 09:22 AM

Dans cet article, nous allons explorer le système de notification dans le framework Web Laravel. Le système de notification de Laravel vous permet d'envoyer des notifications aux utilisateurs sur différents canaux. Aujourd'hui, nous discuterons de la façon dont vous pouvez envoyer des notifications OV

See all articles