首先,如果这是一个糟糕的问题/做法,请道歉。我对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}', 'ServiceController@getData')
->where('slashData', '(.*)');
});
控制器:
public function getData($slashData = null) {
if($slashData) {
return $slashData;
}
}
结果:
DfDte//uM5fy582WtmkFLJg==
正如您所看到的,它传递了var但似乎正在将\转换为/.
我试图创建一个API,不幸的是,我传递的变量不受我的控制(例如我不能使用\或/)。
有没有人有任何建议或能指出我正确的方向?
感谢。
答案 0 :(得分:0)
你不应该这样做。 Laravel会认为这是一个新参数,因为“/”。相反,请在参数中使用htmlentitites
和html_entity_decode
,或使用POST
。
答案 1 :(得分:0)
正如您从原始问题的评论中看到的那样,我试图在URL中传递的变量是我之前使用json_encode
的先前API调用的结果。 json_encode
将自动尝试并转义正斜杠,因此将额外的\添加到变量中。我在原始呼叫中添加了JSON_UNESCAPED_SLASHES
标志,瞧,一切都按预期工作。