2011-11-10 15 views
1

のコーディングとテストについての質問のカップル:私は(<a href="http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/" rel="nofollow">API library</a>で)CodeIgniterのフレームワークを使用してPHPでAPIを構築しています、と私は簡単な質問のカップルを持っているAPI

  1. 私が言われてきましたオープンなAPIではないので(私は自分で作成したアプリケーションだけで使用するので)、すべてのユーザーに一意のトークンを生成する必要はありません。その場合は不要なオーバーヘッドになります。これは本当ですか?
  2. APIを簡単にテストする方法はありますか?私はAPI認証(私はユーザーを使用する/トークンではなくコンボを渡す)を試してみたいときや、POSTパラメータを渡すときにそれをどうするか分からない。

ご協力いただきありがとうございます。私は上記の問題を解決しようと多くの時間を費やしました。 :(

答えて

0

あなたが例えば.htaccessファイルを経由して、あなただけの認証の基本と認証を扱うことができるAPIを使用して一つだけ、なら。それは、余分なコードを書くことからあなたを救うでしょう。

行う方法についてあなたのAPIをテスト:あなたはPHPのカールの機能を使用して、残りのクライアントを作成することができますPHPのマニュアルはGETを作るためにいくつかの例を提供し、POSTがカールして呼び出す

http://www.php.net/manual/en/ref.curl.php

+0

ありがとう、私はそれを見ていきます。私は.htaccessを避けたいです。 – KeyStroke

2

あなたはあなたのAPIと考えることができますように。。ビューをレンダリングする代わりに、データを吐き出して終了する点を除いて、CIフレームワーク内の他のメソッド。

あなたが具体的に何をしようとしているかわからないので、私は一般的に答えます。

1) - はい、不要なオーバーヘッドですが、あまり多くはありません。サイト上のランダムなページにpingを実行するスクリプトだけでなく、呼び出しがあなたから来ていることを確認するために、何らかのトークンを渡す必要があります。それは静的である場合もありますが... http://www.yoursite.com/controller/method/token

次に、渡されたトークンをクラス内の静的セットでチェックしてください。

2) - 最初にナビゲートしてください。例えば、あなたのAPIがjsonオブジェクトを返す場合、それは画面上に吐き出され、そこで結果を確認することができます。次に、コードを介して確認するには、あなたのリクエストのメドードを選択してください。

は、あなたのPHPがだったと言う:

public function getUsers() 
{ 
    if(isset($_POST['token']) && $_POST['token'] == 'abc123') 
    { 
     die(json_encode(array('users' => array('1' => 'someone', '2' => 'someone else')))); 
    } 
} 

は、その後、あなたはその後のcURLを使用し、サーバ側場合

$.ajax({ 
    url: 'yoursite.com/controller/getUsers', 
    type: "POST", 
    data: {token: 'abc123'}, //obviously make this more complex 
    async: false, 
    global: false, 
    dataType: "json", 
    success: function(data){ 
       // do something with your data 
    } 
}); 

...オンデマンド要求のためのAjaxのようなものを経由して、それを呼び出します。選択はあなたのものです。より深い回答が得られるように、質問を絞り込んでください。

+0

すばらしい答え!ありがとう!しかし、(APIにアクセスするための)認証はどうですか?使用しているライブラリは、APIキーだけでなく、ユーザー/パスを要求します。また、最初の質問に関して、各リクエストでPOSTを介してユーザーのログイン情報を送信すると、トークンと同じジョブが実行されますか? – KeyStroke

+0

ユーザ/パスを強制することは、ライブラリ側のどこかでクロスリファレンスされていない限り、これに匹敵するものを単に渡すだけで簡単に回避できます。一般的なユーザー/パスを作成して、セキュリティの習慣を強制しようとするような人の試みをバイパスすることを心配していない場合は、すべての要求に合格させることができます。いずれにせよ、それはあなたのAPIなので、何が起こるのかを制御しています。少なくとも私はこの投稿から得たものです。 –

関連する問題

 関連する問題