私は通常、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 がどのようにフォーマットされ、パラメーターとして含まれているかに関係しているのでしょうか?