通过 Laravel 路由在变量中传递“\”和“/”
Passing "\" and "/" in variable via Laravel Route
首先,如果这是一个不好的地方,我们深表歉意question/practice。我是 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:
我在 Whosebug 上做了一些搜索,最后使用了以下代码,它几乎可以工作,但是,它似乎正在将 \ 转换为 /。
路线:
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,不幸的是,我传递的变量超出了我的控制范围(例如,我不能简单地不使用 \ 或 /)。
有没有人有任何建议或可以指出正确的方向?
谢谢。
你不应该那样做。 Laravel会认为是新参数,因为"/"。相反,在参数中使用 htmlentitites
和 html_entity_decode
,或使用 POST
.
正如您从对原始问题的评论中看到的那样,我试图在 URL 中传递的变量是我使用的先前 API 调用的结果 json_encode
上。 json_encode
将自动尝试转义正斜杠,因此额外的 \ 被添加到变量中。我在原始调用中添加了一个 JSON_UNESCAPED_SLASHES
标志,瞧,一切都按预期工作。
首先,如果这是一个不好的地方,我们深表歉意question/practice。我是 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:
我在 Whosebug 上做了一些搜索,最后使用了以下代码,它几乎可以工作,但是,它似乎正在将 \ 转换为 /。
路线:
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,不幸的是,我传递的变量超出了我的控制范围(例如,我不能简单地不使用 \ 或 /)。
有没有人有任何建议或可以指出正确的方向?
谢谢。
你不应该那样做。 Laravel会认为是新参数,因为"/"。相反,在参数中使用 htmlentitites
和 html_entity_decode
,或使用 POST
.
正如您从对原始问题的评论中看到的那样,我试图在 URL 中传递的变量是我使用的先前 API 调用的结果 json_encode
上。 json_encode
将自动尝试转义正斜杠,因此额外的 \ 被添加到变量中。我在原始调用中添加了一个 JSON_UNESCAPED_SLASHES
标志,瞧,一切都按预期工作。