57. 路由 基本路由

2017-10-06  本文已影响14人  独步天堂
Route::get('foo', function () {
    return 'Hello World';
});
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
  • GET 获取资源
  • POST 创建资源
  • PUT 编辑/更新资源(需提交完整的资源字段)
  • PATCH 编辑/更新资源(可以提交需要更新的字段)
  • DELETE 删除资源
  • OPTIONS 服务器允许哪些请求谓词

这些就是最近比较流行的RestFul模式常用的,另HTML表单只支持POST、GET两种请求方式,PUT、PATCH以及DELETE是Laravel中伪造的HTTP请求方式,需要在表单中添加<input type="hidden" name="_method" value="PUT(PATCH、DELETE)">才能生效,还要配置路由。

patch方法用来更新局部资源,这句话我们该如何理解?
.
假设我们有一个UserInfo,里面有userId, userName, userGender等10个字段。可你的编辑功能因为需求,在某个特别的页面里只能修改userName,这时候的更新怎么做?
.
人们通常(为徒省事)把一个包含了修改后userName的完整userInfo对象传给后端,做完整更新。但仔细想想,这种做法感觉有点二,而且真心浪费带宽(纯技术上讲,你不关心带宽那是你土豪)。
.
于是patch诞生,只传一个userName到指定资源去,表示该请求是一个局部更新,后端仅更新接收到的字段。
.
而put虽然也是更新资源,但要求前端提供的一定是一个完整的资源对象,理论上说,如果你用了put,但却没有提供完整的UserInfo,那么缺了的那些字段应该被清空。
.
补充:
.
最后再补充一句,restful只是标准,标准的意思是如果在大家都依此行事的话,沟通成本会很低,开发效率就高。但并非强制(也没人强制得了),所以你说在你的程序里把方法名从put改成patch没有任何影响,那是自然,因为你的后端程序并没有按照标准对两个方法做不同处理,她的表现自然是一样的。

Route::match(['get', 'post'], '/', function () {
    //
});

Route::any('foo', function () {
    //
});
<form method="POST" action="/profile">
    {{ csrf_field() }}
    ...
</form>

Route::redirect('/here', '/there', 301);

Route::view('/welcome', 'welcome');

Route::view('/welcome', 'welcome', ['name' => 'Taylor']);
上一篇 下一篇

猜你喜欢

热点阅读