和上次的 自訂 TokenMisatchException 錯誤訊息類似,不過這次是分享的是如何自訂 MethodNotAllowedHttpException 的錯誤訊息。
在這個 RESTful API 盛行的時代這個錯誤其實常常冒出來,因此記錄一下….
在這個 RESTful API 盛行的時代這個錯誤其實常常冒出來,因此記錄一下….
Why! 為何需要自訂這個錯誤訊息
一般來說這個問題很容易被開發者忽略,因為在非 debug 模式下最多收到 〝Whoops, looks like something went wrong.〞 的錯誤訊息而已。
但這樣並不是件好事….
在 https://localhost/post_to_create 被乎叫時
理當這支 API 應該要用 POST 的方式進入,但是現在以 GET 的方法打開,自然就會拿到下面的錯誤,這就是個安全性的曝露!
就算在非 debug 模式下只會拿到 〝Whoops, looks like something went wrong.〞 的錯誤訊息,但這也足以讓人知道你是使用 Laravel 進行開發
一來是若呼叫端是 Mobile APP 收到這個錯誤也只會讓他一頭霧水而已…然後就閃退、跳出….
所以我們需要自訂錯誤訊息!
HOW! 如何自訂錯誤訊息
打開 Handler.php
app/Exceptions/Handler.php
找到 public function render 並需求在render 內任意處加入 …
若你要回傳一個 view
if( $e instanceof MethodNotAllowedHttpException){ return response(view('errors.500'), 500); }
若你要回傳 text
if( $e instanceof MethodNotAllowedHttpException){ return response('illegal method called', 400); }
若你要回傳 Json
if( $e instanceof MethodNotAllowedHttpException){ return \Response::json(['message' => 'illegal method called'], 500); }
這麼一來就能輕鬆自訂 Laravel 5 MethodNotAllowedHttpException 的錯誤訊息了。
RESTful API
簡單說就是 API 網址精簡化單純而且不需要傳入太多的參數就可以由網址得知 API 的動作。
配合 method 就能由更精簡的網址完成更多的操作
簡單範例如:
GET : https://cola.api/use/ -> 取使用者列表
POST: https://cola.api/use/ -> 新增使用者
PUT: https://cola.api/use/123 -> 修改使用者 id 123
DELETE: https://cola.api/use/123 -> 刪除使用者 id 123
POST: https://cola.api/use/ -> 新增使用者
PUT: https://cola.api/use/123 -> 修改使用者 id 123
DELETE: https://cola.api/use/123 -> 刪除使用者 id 123
有別於舊有的落落長的 API …
GET : https://cola.api/user?action=create&name=cola&tel=0987654321&address=taiwan-taipei&zip=110&gender=manle&url=cola.workxplay.net
wiki : https://en.wikipedia.org/wiki/Representational_state_transfer
ihower 大神 : https://ihower.tw/blog/archives/1542