关于编码和测试API的几个问题

时间:2011-11-10 01:40:20

标签: php api codeigniter

我正在使用CodeIgniter框架(使用API library)在PHP中构建API,我有几个简单的问题:

  1. 我被告知我不需要为每个用户生成一个唯一的令牌,因为它不是一个开放的API(因为我将它用于我自己构建的应用程序),而且它是一个在这种情况下不必要的开销这是真的吗?
  2. 有没有简单的方法来测试API?当我想测试API身份验证(我使用用户/传递组合,而不是令牌)或传递POST参数时,我不知道该怎么做。
  3. 非常感谢您的帮助。我花了很多时间试图解决上述问题。 :(

2 个答案:

答案 0 :(得分:2)

您可以将CI视为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'))));
    }
}

然后你通过像ajax之类的东西来点击按需请求......

$.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
    }
});

如果是服务器端,则使用cURL。真的是你的选择。如需更深入的回复,请缩小您的问题。

答案 1 :(得分:0)

如果您是唯一一个使用API​​的人,您可以使用auth basic来处理身份验证,例如通过.htaccess。它可以帮助您避免编写额外的代码。

关于如何测试API:您可以使用PHP的curl函数创建rest客户端。 php手册提供了一些使用curl进行GET和POST调用的示例。

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