2

Web プロジェクトを開始する予定で、最適なオプションを探しています。最終的には、Java + Seam + J Boss AS + JPA Hibernate に固執することにしました。

しかし、URL 書き換えに関しては、多くの成果が得られずに、本当に長期にわたって実行されてきました。

私は階層構造を持っています、Ex。カテゴリ -> サブカテゴリ -> サブサブカテゴリ。

基本的に、これらを foo.com/category/sub-category/sub-sub-category のようにマッピングしたい

  • これを達成するのに何が役立ちますか?
  • 他の可能性は何ですか?
  • URL 書き換えはどの程度柔軟ですか?
  • URL に非階層データを追加できますか? 例 .../category/sub-category/type/sub-sub-category

柔軟性に関する私の質問は、主に RESTFUL がコアであると想定されているためです。したがって、URL の書き換えがそれほど柔軟でない場合は、設計について慎重に検討する必要があります。

よろしく。

4

5 に答える 5

2

Seam に組み込まれている URL 書き換えを使用できます。また、書き換えルールをより柔軟にしたい場合は、http://tuckey.org/urlrewrite/から UrlRewriteFilter を使用できます。以下の両方の例:

Seam の組み込みリライト(いずれにせよ、カバーの下で tuckey フィルターを使用する可能性があります)

まず、components.xmlファイルで URL 書き換えを有効にします。

<web:rewrite-filter view-mapping="*.seam"/>

次に、pages.xmlファイルに書き換えルールを追加します。

<page view-id="/home.xhtml">
    <rewrite pattern="/home/{category}/{sub-category}/{sub-sub-category}" />
</page>

この場合、着信 URL は次のように機能します。

/home/vehicles/cars/fords

のリクエストであるかのように提供されます。

/home.seam?category=vehicles&sub-category=cars&sub-sub-category=fords

同様に、指定されたリクエスト パラメータがページにある場合、アウトバウンド URL が変換されます。

または、次のように Tucky UrlRewriteFilter を使用することもできます

ここから取得できる Tuckey UrlRewriteFilter jar をプロジェクトに追加します。

http://tuckey.org/urlrewrite/

次に、web.xmlファイルにフィルターを追加します。

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

最後に、 urlrewrite.xmlというファイルを WEB-INF ディレクトリに追加します。このファイルは、書き換えルールを定義します。おそらく、正規表現にある程度慣れたいと思うでしょう。ファイルは次のようになります。

^/home.seam?category=(. )&sub-category=(. )&sub-sub-category=(.*)$ /home/$1/$2/$3

<rule match-type="wildcard">
   <from>/home\/$1\/$2\/$3</from>
   <to type="redirect">/home.seam?category=$1&sub-category=$2&sub-sub-category=$3</to>
</rule>

Seam doco はこちら - Seam ドキュメント

Tucky UrlRewriteFilter doco はこちら - Tuckey RewriteFilter doco

于 2009-07-31T05:34:23.960 に答える
1

Restletを使用してリソースのマッピングを処理します。Seam で試したことはありませんが、これらがうまく適合することは理解しています。

更新: 誰かが、それらを統合する方法を示すサンプル プロジェクトと関連するフォーラム投稿を作成しました。

Restlet 2.0 チュートリアルでは、URL の書き換えとリダイレクトを処理する方法について説明しています。

于 2009-07-20T21:48:40.820 に答える
1

URL書き換えの他のオプションはどうですか?

かわいい顔?

于 2009-07-21T01:32:17.543 に答える
1

URI の構築は REST とは直交しています。参照: http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

于 2009-07-20T22:02:57.203 に答える
0

私はあなたが使用する予定の同じフレームワーク (Java + Seam + J Boss AS + JPA Hibernate) を使用しており、RestFul Web サービスも私のコアです。

私は残りのフレームワークとして resteasy を選択しました。これは問題なく簡単に動作します (easymock と同じように、書き換えとテストの両方が可能です)。また、これは jboss 製品であり、統合が容易な seam で正常に動作します。

サンプルコードとして:

@Path("/webservice")

public class Web
{

    @GET
    @Path("{web}")
    @ProduceMime("application/xml")
    public String test(@QueryParam("param") String param, @PathParam("web") String web) 
{
//  code here
}
}
  • @Pathクラスの「ルートパス」です(実際の「ルート」はに設定されますcomponents.xml
  • @GETレストからです
  • ProduceMimeまたはConsumeMime、消費または生成する必要がある MIME です
  • @QueryParamURL@PathParamのパラメーターと、取得する必要があるパラメーターです。

したがって、この get は から呼び出しを受け取り、/webservice/web?param=lalalaその形式の文字列を返しapplication/xmlます。

于 2009-08-06T19:45:16.907 に答える