2011-01-28 17 views
0

したがって、Webアプリケーションとモバイルアプリケーションの両方からアクセスするAPIプロバイダを実装しました。WebサイトからAPIプロバイダへのAJAXリクエストのベストプラクティス

これは大規模なプロジェクトではありませんが、私は自分の学習経験を最大限に引き出し、できる限りのことをしたいと考えています。

とにかく、私が理解しているように、スケーラビリティをより簡単にするために、APIプロバイダサービスと実際のWebサイトを別々のドメインに配置する方が良いようです。 たとえば、twitterにはtwitter.comとapi.twitter.comというウェブサイトがあります。

すぐに問題になるのは、AJAXのクロスドメイン問題です。私はそれについて聞いたが、はるかに名前

  • プロキシサーバーを超えて知らない:私が集まる何から 、そこにクロスドメインAJAX

    1. JSONPを実装するための2つの方法があるので、私のウェブサイトが構築されASP.NET MVCの上にあり、すべてのクロスドメインAPIリクエストを処理するAPIProxyコントローラを作成することを考えていました。

    こうすれば、私は$ .ajax(settings)経由でAJAX呼び出しを行い、APIProxyコントローラに対応するWebサイトURLを渡します。 APIProxyコントローラは適切なPOSTサーバー呼び出しを行い、JSON応答を処理し、応答をAJAXコールバック関数に返します。

    flXHRについて聞いたことがあります。iPadやモバイルブラウザのようなデバイスはFlashをサポートしていないため、Flashを使用したくありません。

    とにかく、別のドメインまたはサブドメインにあるAPIプロバイダを使用してウェブサイトを管理する際のベストプラクティスについて教えてください。

  • 答えて

    2

    JSONをリクエストすると、オブジェクトまたは配列が返されます。スクリプトタグは、同じドメインルールの対象ではありません。 JSONをロードし

    <script src="Http://api.example.com?param1=something&etc"></script> 
    

    を、そしてそれがJavaScriptのように実行します:だからではなく、AJAX呼び出しを行うには、基本的にこれを行うだろう。

    ...しかし、単純なオブジェクトまたは配列自体は "実行中"ではあまり役に立ちません。したがって、JSONをリクエストするときには、コールバック関数の名前も含めます。プロバイダがJSONを返すのではなく、コールバックが提供されていると判断した場合、実際にJavaScriptを返します.JSONは引数として関数に渡されます。

    スクリプトが読み込まれると、あなたが定義した関数が呼び出され、使用するJSONが与えられます。

    これはJSONPです。

    参考文献

    1. ニュートン、アーロン。 "Request.JSONP" クライアントケー。 2009年12月7日。ウェブ。 2011年1月28日。
    +0

    JSONPに私を記入してくれてありがとう!私はちょうどAPIがPOSTリクエストを受け入れ、JSONPがGETリクエストしか受け入れることができないので、JSONPは疑問に思っていません。 – Abe

    関連する問題