2012-03-28 2 views
4

CF10のRESTサポートを使用して、SEOフレンドリーなURLのURL書き換え/ ModRewriteの使用を置き換えることはできますか?正しいページにGETメソッドとPOSTメソッドを定義する薄いレイヤーと<cfinclude>を書きますか?CF10でURLリライトの代わりにRESTを使用できますか?

また、サーバーに負担をかけると、Webサーバーに対処するほうがよいでしょうか?

CFMLでは、バージョン管理とメンテナンスがはるかに簡単です。

おかげ

答えて

1

@Henry RESTはURLの書き換えを置き換えるものではありません。

まず、すべてのREST URLは形式を持っています。

http://localhost:8500/rest/App_Name/Rest_Path

部分は必須である "休みます"。 「残りの部分」を変更する場合は、web.xml(URLマッピングの変更)で変更することができます。

App_Nameは必須ではありません。サーバーはデフォルトの休止アプリケーションを持つことができます。デフォルトのアプリケーションでは、AppNameを指定する必要はありません。他の(デフォルト以外の)残りのアプリケーションにアクセスするには、AppNameを指定する必要があります。管理者のRest Service登録ページでアプリケーションをデフォルトにすることができます。

Rest_Pathは、HTTP呼び出しで呼び出される必要があるCFCとCFCの関数を識別します。

これらのURL形式が受け入れ可能な場合、これらの形式のURLはCFCの特定の機能にマッピングできます。HTTP呼び出しがURLに行われると、対応するCFFunctionが呼び出されます。 RESTを使用すると、CFCの関数にアクセスしています。このようにCFCまたはCFMに直接アクセスすることはできません。しかし、この関数では、あなたが望むものを実装することができます(CFCの呼び出し、別のCFMの呼び出しなど)。

この返信はあなたの質問に答えますか? 1この操作を行うことができたとしても

おかげで、 ポール

+0

クールなので、「残りの部分」を 'web.xml'の中の何か他の部分に変更し、AppNameを変更しないと実行できないようです。 CFのREST URLを重く翻訳していますか?それは検索エンジンのクロールでCFを殺すだろうか? – Henry

2

私はあなたが言っている(そして、おそらく私にはない)何を理解していれば、あなたは変数を解析、要求をインターセプトしますハンドラを作成し、その後、RESTを介して適切なページを要求?それがあなたが念頭に置いていることであれば、私はあなたがこれによって得られるものに従うかどうかわからない。 REST(一般的に)は、メソッドで取得するための汎用HTTP APIのほうが多く、ページ/コンテンツのパラダイムではありません。

あなたが探しているものは、書き換えのSEO URLハンドラとしてCFを使用することです。これを今すぐ行うことができます。 IISの例を使用するには、特定のドキュメントに関連付けられていないすべての要求を取得する「カスタム404」ハンドラ(CFMページ)を作成できます。ハンドラは、URLを解析して変数を取り除き、正しいcfmコードまたはページを「インクルード」します。それはあなたが欲しいもののように少し聞こえる - しかしそれは本当はRESTではない。

おそらく、URLからクエリ文字列を作成することによって、必要なコンテンツを取得する、ある種のCFHTTP呼び出しを行うことを考えているかもしれません。誰かがのようなURLをロードするのであれば: - これはあなたがcfincludeタグを使用したほうが良いでしょうトリックを行うだろうが

<cfhttp 
url="http://blah.com/index.cfm?#listfirst(cgi.script_name,'/')#=#listlast(cgi.script_name,'/')#"/> 

<cfoutput>#cfhttp.filecontent#</cfoutput> 

blah.com/productid/550

あなたはそうのようなコードを書くことができますこのアプローチよりむしろ。上記のようなアプローチでは、実際にリクエストごとに追加のスレッドが生成されます.1つはブラウザのリクエスト用スレッドで、もう1つはcfhttpリクエスト用です。

最後に私は、(ApacheまたはIISの)URL書き換えがより効率的でより「従来の」ものであることを丁寧に示唆しているため、おそらく一般的にはより良い選択です。

+1

私はCF10が何らかの方法でコンポーネントへの RESTのようなアドレスのルーティングを処理する場合、リクエストをルーティングしてhtmlを出力する主要な方法として単純に使用できるかどうかと思います。私はその答えは分かりませんが、答えの主な要因は、コンテンツの任意の出力を許可するか、過去にCFがサポートしていたWebサービスのようなXML/JSONだけかどうかということです。 –

+0

私はそれを試したことはありませんが、CF10は、URLの正規表現を行うことができ、GET/POST/PUT/DELETEをCFCのメソッドとしてマップできるRESTサポートを導入しています。だから私は、その機能を使ってフレンドリーなURLでSEOウェブサイトを作って、WebサーバーのリライトモジュールからCFに移行することができるのだろうかと思います。 – Henry

+0

ああ..私はあなたが運転しているものを見ます。私はなぜこれがURLrewriteよりも優れているか、または管理しやすいと思うのか少し不思議です。 Rube Goldbergによって作られたものとかなり単純なデバイスを置き換えているようです:) –

1

は、私はそれが間違って仕事をするため、間違ったツールを共同選ぶかなと思います。 URLの書き換えは、Webサーバーの仕事でありCFサーバーの仕事ではなく、WebサーバーはCFよりもはるかに優れています。 CFのRESTインターフェイスは、APIを構築するためのものであり、URLの書き換えを行うためのものではありません。

の場合、404でURL書き換えを処理したい場合は、404ハンドラまたはonMissingTemplate()ハンドラを使用する方が適していますか?少なくともあなたは仕事のためのツールを使用しています(最高のものでない場合)。

バージョン管理について.htaccessファイルは、CFMLファイルのようなテキストファイルです。私はIISのリライトモジュールをあまりにも厳しく見ていないが、テキストファイルを使ってリライトを構成/維持することはできないのだろうか?明らかにApacheは可能ですが、mod_rewriteと互換性のある.htaccessファイルを使用するHeliconのISAPIリライトモジュールを使用します。

生産パフォーマンスに不利益を与える方法を使用することで、開発者の仕事をより簡単にしようとしているようです。 「開発者の生活を楽にする」ことは、決して生産環境を損なう根拠にはならない(明らかにIMO)。

+0

ありがとうございました!とても素敵な答え – Henry

+1

ヘンリーはここに私が追加するもう一つのことは...私が "send"を押すまでそれについて考えなかったのは、.htaccessと[IISがそれをする]は業界で受け入れられている(もしそれをどうやって行うのかまだ分かっていなければ、それは十分に文書化されている)。 CF RESTメカニズムでそれをやろうとするのは「別注」になるため、サードパーティが必要としている場合には簡単に取り戻すことができません。 「車輪を再発明しないでください」、基本的には、私は推測します。 –

関連する問題