1

これは質問するのが難しい質問です:

私は2つの部分でRESTアプリケーションを使用しました。

  • サーバー:Restlet2.0.14で実装
  • クライアント:Backbone.jsを使用したWebApp

クライアントでは、バックボーンアプリはバックボーンルーターAPIを使用します。たとえば、次のURIがあります。

"http:// localhost:8000 / myApp /#/ resource1 / attribute"

これはバックボーンルートです。おそらく、このURLをWebブラウザーに入れると、ブラウザーはサーバーに「http:// localhost:8000 / myApp /」を送信しますが、2番目の部分(フラグメント)は実行用です。彼がサーバーからアプリをダウンロードするとき、私はそれが正しいと思います...

さて、私はRestletを使用して独自のWebサーバーを実装しているので、次のシナリオが必要です。

  • ユーザーがブラウザに次のURLを入力すると、「http:// localhost:8000 / myApp / resource1 / attribute」サーバーはバックボーンWebアプリケーションを返す必要があり、ブラウザはフラグメントを含む正しいビューを(ルーティングを使用して)ロードする必要があります。

そのポイントを実装するために、私は自分のレストレットサーバーにリダイレクトを実装しました。URLへの着信リクエスト: "http:// localhost:8000 / myApp / resource1 / attribute"私はそれをこのURLにリダイレクトします: "http:// localhost :8000 / myApp /#/ resource1 / attribute / "を307(一時的なリダイレクト)で指定し、"Location"ヘッダーにURLを設定します。

現時点ではすべてが正しく、ブラウザはリダイレクトで応答を受け取り、ブラウザはこのURLでサーバーを再度呼び出します。URLバーにリダイレクトURLが表示されます。しかし、ルーティングが機能せず、webAppを受け取りましたが、ブラウザーがURIのフラグメントを実行していないようです。

たぶん、誰でも私に光を見せてくれますか?

4

1 に答える 1

1

問題は、リダイレクトの応答 URL にありました。backbone.router のルーティングは "resource1/:variable": "variableFunction" であるため、最後の「/」は省略する必要があります。

ブラウザで実行されたフラグメントが正しく機能するようになりました。

于 2012-09-04T14:16:18.180 に答える