首先,如果這是一個糟糕的問題/實踐,請道歉。我對Laravel非常陌生,所以我仍然在努力解決它。通過Laravel在變量中傳遞「」和「/」
我試圖在Laravel 5路由中傳遞包含正斜槓(/)和反斜槓()的變量,並且遇到一些困難。
我使用下面的方法:api.dev/api/v1/service/DfDte\/uM5fy582WtmkFLJg==
。
嘗試1:
我第一次嘗試用下面的代碼和自然導致一個404
路線:
Route::group(array('prefix' => 'api/v1'), function() {
Route::resource('service', 'ServiceController');
});
控制器:
public function show($service) {
return $service;
}
結果:
404
嘗試2:
我做了一些StackOverflow上搜索,並最終使用下面的代碼,這幾乎是工作,但是,這似乎是轉換\ 至 /。
路線:
Route::group(array('prefix' => 'api/v1'), function() {
Route::get('service/{slashData}', '[email protected]')
->where('slashData', '(.*)');
});
控制器:
public function getData($slashData = null) {
if($slashData) {
return $slashData;
}
}
結果:
DfDte//uM5fy582WtmkFLJg==
正如你所看到的,它傳遞var,但似乎將\轉換爲/。
我試圖創建一個API,不幸的是我傳遞的變量超出了我的控制範圍(例如,我不能簡單地不使用\或/)。
有沒有人有任何建議或可以指出我在正確的方向嗎?
謝謝。
如果'api。dev/api/v1/service/DfDte \/uM5fy582WtmkFLJg =='應該是一個請求URL,然後注意它顯然是無效的。反斜槓在URL中不是一個有效的字符,你必須「百分比編碼」它。或者,如果實際上您想要轉義下面的正斜槓,則同樣:不要使用反斜槓,而是使用URL編碼斜線。正如URL請求的正式定義一樣。 – arkascha
不幸的是\ \實際上是我想作爲變量傳遞的ID的一部分。我試過編碼這個變量,例如'DfDte%5C%2FuM5fy582WtmkFLJg%3D%3D',但這隻會導致另一個404使用「嘗試2」中提供的代碼。 – tombraider
當然,我不知道你的數據模型,但是包含文字序列'\ /'的ID聽起來對我來說不太可能。你真的確定這不僅僅是爲了逃避包含正斜槓的符號嗎? – arkascha