首先,如果这是一个糟糕的问题/实践,请道歉。我对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