在routes.php
中给出以下定义的路线:
Route::resource('smoker','SmokerController',['only' => ['update']]);
..导致产生两条不同的路线:
| PUT | profile/smoker/{smoker}| profile.smoker.update | App\Http\Controllers\Profile\SmokerController@update |
| PATCH | profile/smoker/{smoker}| | App\Http\Controllers\Profile\SmokerController@update |
我可以猜测PUT
和PATCH
动词在一个宁静的环境中足够接近它们都属于“更新”状态。限制。我无法找到支持该猜测的任何文档,也无法在任何地方找到文档,为什么一个(PUT)的别名会自动设置为profile.smoker.update
。
更令人困惑的是,类似的限制,'显示'会导致动词GET
和HEAD
合并为路由列表中的GET|HEAD
。
| GET|HEAD | profile/smoker/{smoker}| profile.smoker.show | App\Http\Controllers\Profile\SmokerController@show |
为什么GET
和HEAD
合并,但PUT
和PATCH
不合并?
答案 0 :(得分:2)
RFC定义了PUT与PATCH之间的差异,并且有关于此的信息。一个例子是评论中链接的答案(example)。但是,对于Laravel框架,确实没有区别。
关于你的第二个问题,为什么PUT和PATCH没有在路线中合并,这实际上只是一个疏忽。根据{{3}},Laravel 5.2中已经纠正了这种疏忽。因此,从5.2开始,PUT和PATCH路由应该显示为合并,就像GET和HEAD路由一样。