2020年5月1日金曜日

簡易URLに含まれるパス接頭辞について

Oracle APEX 20.1では簡易URL(Friendly URLs)として、より一般的な形式のURLによるアクセスが可能になりました。まだ日本語に翻訳されたマニュアルがないため英語ですが、マニュアルのここで説明されています。

今までの形式は以下です。
http://hostname:port/ords/f?p=App:Page:Session:Request:Debug:ClearCache:itemNames:itemValues:PrinterFriendly
簡易URLでは、形式が以下になります。
http://hostname:port/ords/path_prefix/r/app_alias/page_alias?parameters (Such as —
        p7_customer_id=377&clear=7&session=1247058356345&cs=3MdkfQa9NLmkyHAbwGPg3U-nmA7XIw5sWjU2rMzSvOy_wP1_z7BBI-Gbh2JgvffARgcYJy8id4VtL3d0l1tYm0w)
より一般的なURLにすることにより、場合によっては問題になっていたURLのエンコーディングに関する処理や正規表現によるフィルタリングやリライトの難しさといった、今まであったデメリットを解消しています。20.1からは新規にアプリケーションを作成すると、デフォルトで簡易URLが有効になります。

簡易URLにはpath_prefixが含まれます。これはデフォルトではワークスペース名になります。20.1以前には、簡易URLという機能自体がありませんし、また、アプリケーションIDは、インスタンス全体で一意の値ですから、指定されるURLにワークスペース名は含まれません。このため、同じインスタンスのAPEXへのアクセスをワークスペース毎に制限したい、という当然ありそうな要件にも簡単な解決方法はありませんでした。20.1からはフロントのHTTPサーバーの設定で容易に制限をかけることができるでしょう。

このpath_prefixですが、デフォルトのワークスペース名から変更することが可能であることを最近知りました。ワークスペース名は記述的な長い名前を付けたくなりますが、URLに含まれるなら略語のような短縮された名前にしたいと思います。ですので、アプリケーションを公開する上で、これはとても重要なことです。

URLに含まれるパス接頭辞(path_prefix)を変更するのは、アプリケーション・ビルダーの右上、スパナを持った人のアイコンをクリックし、ワークスペースの管理メニューから、サービスの管理ワークスペース・プリファレンスの設定を開きます。

SQLワークショップのセクションにURL接頭辞の設定があります。こちらを変更するとpath_prefixを含んだ簡易URLが変更されます。ひとつのOracle APEXの実行環境で一意である必要があります。

ORDSによるRESTサービスを開発した経験がある方は、これと同様な設定があることを知っていることでしょう。RESTfulサービス構成に含まれるスキーマ別名の設定です。

このスキーマ別名が設定されているときは、先ほどのSQLワークショップのセクションの設定が変わります。

ORDSスキーマ別名のオーバーライドという設定項目が現れます。ヘルプを読んでみると
ORDSスキーマ別名とApplication Expressワークスペース・パス接頭辞に異なる値を指定することはお薦めしません。
とのことで、何が起こるかわからないし、それをする理由も思いつかないので、オーバーライドしない方がよいでしょう。この場合は簡易URLのパス接頭辞は、ORDSのRESTfulサービスの構成から指定することになります。ORDSスキーマ別名のオーバーライドをONにすると以下の画面になります。

URLに含まれるパス接頭辞の説明は以上です。余談ですが、簡易URLは翻訳をフレンドリURLとして欲しいです。標準的なURLの形式にそっている、という意味です。簡易というのとは、少々意味が異なります。