我通常像这样在 ZF2 中格式化我的路线:/name/to/route
现在我一直在用我的 api 路由做同样的事情,但是我发现我正在努力包含编码的 url 或数组等数据。
以下是此类路线的示例:
http://example.com/api/register/access/code/c102dea422fa4bb6958d77a29d9873d2/http%3A%2F%2Frouter-local.example.com%2Fapi%2Fdirectory
以下表示正斜杠,因此导致路由不起作用:%3A%2F%2
我想我应该这样编码我的路线:
http://example.com/api/register/access/code/?access_code=c102dea422fa4bb6958d77a29d9873d2&route=http%3A%2F%example.com%2Fapi%2Fdirectory
你如何配置 module.config 文件来处理这个问题?
目前它在apigility中设置为:
'api.rpc.register-access-code' => array(
'type' => 'Segment',
'options' => array(
'route' => '/api/register/access/code/:access_code/:route',
'defaults' => array(
'controller' => 'Api\\V1\\Rpc\\RegisterAccessCode\\Controller',
'action' => 'registerAccessCode',
),
),
),
编辑
我通过执行以下操作对我的路线进行了编码以包含 GET 参数:
$url = "http://example.com/api/register/access/code/";
$params = [
'access_code' => 'c102dea422fa4bb6958d77a29d9873d2',
'route' => 'http://example.com/api/directory'
];
$final = $url . "?" . http_build_query($params);
这给出了这个:
但是,由于“请求的 URL 无法通过路由匹配”而中断。错误。
由于包含 URL 中的斜杠的解释,该路由无法识别。
也许问题与 URL 的格式和作为参数的包含方式有关?