国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

Laravel 5.5中為響應(yīng)請(qǐng)求提供的可響應(yīng)接口詳解

2024-05-05 00:01:18
字體:
供稿:網(wǎng)友

前言

Laravel 5.5 也將會(huì)是接下來的一個(gè) LTS(長(zhǎng)期支持)版本。 這就意味著它擁有兩年修復(fù)以及三年的安全更新支持。Laravel 5.1 也是如此,不過它兩年的錯(cuò)誤修復(fù)支持將在今年結(jié)束。

Laravel 5.5 的路由中增加了一種新的返回類型:可相應(yīng)接口( Responsable )。該接口允許對(duì)象在從控制器或者閉包路由中返回時(shí)自動(dòng)被轉(zhuǎn)化為標(biāo)準(zhǔn)的 HTTP 響應(yīng)接口。任何實(shí)現(xiàn) Responsable 接口的對(duì)象必須實(shí)現(xiàn)一個(gè)名為 toResponse() 的方法,該方法將對(duì)象轉(zhuǎn)化為 HTTP 響應(yīng)對(duì)象。

看示例:

use Illuminate/Contracts/Support/Responsable;class ExampleObject implements Responsable{ public function __construct($name = null) {  $this->name = $name ?? 'Teapot';  } public function status() {  switch(strtolower($this->name)) {   case 'teapot':    return 418;   default:    return 200;  } } public function toResponse() {  return response(   "Hello {$this->name}",   $this->status(),   ['X-Person' => $this->name]  ); }}

在路由中使用這個(gè) ExampleObject 的時(shí)候,你可以這樣做:

Route::get('/hello', function() { return new ExampleObject(request('name'));});

在 Laravel 框架中, Route 類如今可以在準(zhǔn)備響應(yīng)內(nèi)容時(shí)檢查這種(實(shí)現(xiàn)了 Responsable 接口的)類型:

if ($response instanceof Responsable) { $response = $response->toResponse();}

假如你在 App/Http/Responses 命名空間下用多個(gè)響應(yīng)類型來組織你的響應(yīng)內(nèi)容,可以參考下面這個(gè)示例。該示例演示了如何支持 Posts (多個(gè)實(shí)例組成的 Collection):

posts = $posts; } public function toResponse() {  return response()->json($this->transformPosts()); } protected function transformPosts() {  return $this->posts->map(function ($post) {   return [    'title' => $post->title,    'description' => $post->description,    'body' => $post->body,    'published_date' => $post->published_at->toIso8601String(),    'created' => $post->created_at->toIso8601String(),   ];  }); }}

以上只是一個(gè)模擬簡(jiǎn)單應(yīng)用場(chǎng)景的基礎(chǔ)示例:返回一個(gè) JSON 響應(yīng),但你希望響應(yīng)層不是簡(jiǎn)單地用內(nèi)置實(shí)現(xiàn)把對(duì)象 JSON 化,而是要做一些內(nèi)容處理。以上示例同時(shí)假設(shè) App/Http/Responses/Response 這個(gè)類能提供一些基礎(chǔ)的功能。當(dāng)然響應(yīng)層也可以包含一些轉(zhuǎn)換代碼(類似 Fractal ),而不是直接在控制器里做這樣的轉(zhuǎn)換。

與上面示例中的 PostIndexResponse 類協(xié)作的控制器代碼類似以下這樣:

如果你想了解更多有關(guān)這個(gè)接口的細(xì)節(jié),可以查看項(xiàng)目中 相關(guān)代碼的 commit .

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)VeVb武林網(wǎng)的支持。

 

注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到PHP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 道孚县| 无为县| 云梦县| 财经| 微山县| 南岸区| 兰考县| 亳州市| 乌拉特前旗| 峨边| 莱芜市| 古蔺县| 绍兴县| 汕头市| 钟祥市| 承德市| 息烽县| 安图县| 黄平县| 大厂| 措美县| 揭东县| 崇阳县| 司法| 韶山市| 九龙城区| 安龙县| 龙泉市| 胶南市| 宁德市| 禹城市| 洱源县| 柳江县| 黎川县| 洪湖市| 黑水县| 永登县| 高台县| 宁津县| 临泽县| 嘉黎县|