iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0
自我挑戰組

PHP 沿途的風景系列 第 14

[Day 14] Laravel HTTP Response 簡介

  • 分享至 

  • xImage
  •  

Laravel HTTP Response 簡介

前幾篇文章都在講述『怎麼從程式內部 Call API』等文章,這篇文章開始敘述 Call API 得到的 response 如何 format?

再將 response format 之前, Laravel 提供一基礎的 response 方式, Laravel 文件 - HTTP Responses 中提到 Laravel 可以將 Route 或 Controller 的 return value 為 string 時 自動轉換為 Http Response; 文件也提到,Laravel 會自動將 陣列 轉換為 JSON Response.

Response Objects

顯然,Laravel 也知道提供 基礎的 response 是不夠使用的,因此,Laravel 提供 Response Objects,可以經由 class Response 不同的 method, 轉換為不同的 response type,以 return string value 加上 json() 為例,將 HTTP Response 設定其 Header 的 Content-Type 為 JSON 的 JSON Response:

<?php
Route::get('/hi', function(){
   
    // 將 HTTP Response 轉為 content-type: application/json
    return(response()->json("hello word")->get("Content-Type"));
    // Content-Type: "application/json"
});

變更 HTTP Response status code

由上例 call api 的 uri /hi ,始終都會得到 status code: 200 OK,若這時要把 default status code 改為 404 且 Content-Type 要為 application/json ,將如何變更呢!
例子如下:

  • 更改 status code before:
<?php
Route::get('/hi', function(){
    // response 的 value: "hello word", status code: 200
    return response()->json("hello word");
});

  • 更改 status code after:
<?php
Route::get('/hi', function(){
    // 設定 response 的 value: "error msg", status: 404
    // 將 Content-Type 設定為 application/json
    return (response("error msg", 404)->header("Content-Type", "application/json"));
});

結語

Laravel 提供的 class Response 和 helper function response() 幫助我們開發者,簡化程式碼和易閱讀 call api 的 response 以什麼 Content-Type 輸出,我下篇文章將介紹怎麼應用 response() 自制 Laravel helper response function 因應重複的 response.


參考文章

1 Laravel 文件 - HTTP Responses
2 w3schools - Laravel Responses
3 Laravel attaching-headers-to-responses


上一篇
[Day 13] 從程式內部 call api,以 PATCH 為例
下一篇
[Day 15] 好奇 **陣列** 轉換為 JSON Response,真的嗎?
系列文
PHP 沿途的風景30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言