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

Php 关于编写和测试API的几个问题,php,api,codeigniter,Php,Api,Codeigniter,我正在使用CodeIgniter框架(带有)在PHP中构建API,我有几个快速问题: 有人告诉我,我不需要为每个用户生成唯一的令牌,因为它不是一个开放的API(因为我只将它用于我自己构建的应用程序),在这种情况下,这是不必要的开销。这是真的吗 有没有一种简单的方法来测试API?当我想测试API身份验证时(我使用的是用户/传递组合,而不是令牌),或者当传递POST参数时,我不确定如何做到这一点 非常感谢你的帮助。我花了很多时间试图解决上述问题(如果您是唯一一个使用API的人,您可以通过auth b

我正在使用CodeIgniter框架(带有)在PHP中构建API,我有几个快速问题:

  • 有人告诉我,我不需要为每个用户生成唯一的令牌,因为它不是一个开放的API(因为我只将它用于我自己构建的应用程序),在这种情况下,这是不必要的开销。这是真的吗
  • 有没有一种简单的方法来测试API?当我想测试API身份验证时(我使用的是用户/传递组合,而不是令牌),或者当传递POST参数时,我不确定如何做到这一点

  • 非常感谢你的帮助。我花了很多时间试图解决上述问题(

    如果您是唯一一个使用API的人,您可以通过auth basic(例如,通过.htaccess)处理身份验证。这样您就不用编写额外的代码了

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


    您可以像CI框架中的任何其他方法一样考虑您的API,除了它不呈现视图,而是吐出数据然后结束

    因为我们不知道你想具体做什么,我会笼统地回答

    1) -是的,这是不必要的开销,但不会太多。您应该传递某种令牌,以确保呼叫来自您,而不仅仅是一些脚本ping站点上的随机页面。但这可能是静态的。。。

    然后让您的方法使用类中设置的静态令牌检查传递的令牌

    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。选择权在你。要获得更深入的回答,请缩小问题的范围。

    回答得很好!谢谢那么身份验证(访问API)呢?我使用的库要求用户/密码,而不仅仅是API密钥。另外,关于第一个问题,在每个请求中通过POST发送用户登录信息是否与令牌的作用相同?通过传递任何与此类似的内容,可以很容易地避免强制用户/通行证,除非它在库端的某个地方被交叉引用。如果您不担心绕过似乎有人试图强制执行某些安全习惯的行为,那么您可以创建一个通用的user/pass并在每个请求中传递它。不管怎样,它都是您的API,因此您可以控制发生的事情。至少这是我从这篇文章中得到的。谢谢,我会调查的。不过,我想避免使用.htaccess。