1

私は Python/Django を初めて使用しますが、ある Web サイト (siteA.com) 用に REST API をセットアップしており、別の Web サイト (siteB.com) でこの API を呼び出して結果を表示できるようにしたいと考えています。このために、Django REST Framework と Django Auth2 Provider を siteA に追加しました。curl を使用して API を呼び出し、アクセス トークンを取得できるようになりました。

curl -X POST -d "client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=password&username=USERNAME&password=PASSWORD" http://www.siteA.com/oauth2/access_token   [1]

これにより、私が望む応答が得られます。

{"access_token": "72x63615xe29f4xfdadexbcd77x27b5fx0bceexx", "scope": "read", "expires_in": 86399, "refresh_token": "5fx80dx320cx3abe7d0x27d5f1x64e7x413x0f70"}

取得したアクセス トークンを使用して、API を呼び出すことができます。

curl -v -H "Authorization: Bearer 72x63615xe29f4xfdadexbcd77x27b5fx0bceexx" "http://www.siteA.com/api/?q=SOMESTRING&per_page=3&page=1&sort=random"     [2]

これにより、クエリ文字列「SOMESTRING」の 3 つの結果を含む JSON 応答が得られます。

これで問題なく動作しますが、今度は、siteB.com 内からこれらの呼び出しを行いたいと考えています。つまり、ある検索クエリで呼ばれると[1]のようにまずアクセストークンがあるかチェックし、[2]のように検索結果を取得してJSON形式で表示するページを作りたい。私はそれを行う方法がわかりません。requests_oauth2 から OAuth2 を使用しようとしましたが、curl ステートメントを Python に変換する正しい方法がわかりません。何か助けはありますか?

4

1 に答える 1

3

siteB.com で siteA.com の API を公開したい場合は、django-rest-framework-proxy (素敵なサードパーティ パッケージ) を検討してください。

siteB.com が通常の HTML ページに siteA.com の API からの結果を埋め込むようにしたい場合は、データの API を呼び出してから、それを通常のテンプレート レンダリング メソッドに渡す必要があります。コメントに従って使用できますurllib2が、優れたRequestsをお勧めします。

それが役立つことを願っています。

于 2013-09-27T07:29:23.800 に答える