如何使用 firebase.com 创建 api 模拟器?

Posted

技术标签:

【中文标题】如何使用 firebase.com 创建 api 模拟器?【英文标题】:How to create api simulator using firebase.com? 【发布时间】:2016-04-04 03:17:58 【问题描述】:

我正在尝试使用我需要为其创建 api 连接的 ionic 框架创建应用程序。我的要求是我需要使用firebase。我已经浏览了 firebase.com。我了解了他们如何给我们一个 url,以便完成 api 路由连接。但是我想创建自己的 api 服务(模拟器)来提供所需的 json 作为输出?

我该怎么做?

问候, 萨巴里斯里

【问题讨论】:

【参考方案1】:

我写了一篇关于如何将数据从 Ionic 应用程序发布到 php 服务器(并读取响应)的详细帖子,您可以查看它here。

但是,作为一个 tl;dr,你会这样处理:

在您的服务器上,您将创建一个这样的 PHP 文件:

<?php
    //http://***.com/questions/18382740/cors-not-working-php
    if (isset($_SERVER['HTTP_ORIGIN'])) 
        header("Access-Control-Allow-Origin: $_SERVER['HTTP_ORIGIN']");
        header('Access-Control-Allow-Credentials: true');
        header('Access-Control-Max-Age: 86400');    // cache for 1 day
    

    // Access-Control headers are received during OPTIONS requests
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') 

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
            header("Access-Control-Allow-Methods: GET, POST, OPTIONS");         

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
            header("Access-Control-Allow-Headers:        $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']");

        exit(0);
    


    //http://***.com/questions/15485354/angular-http-post-to-php-and-undefined
    $postdata = file_get_contents("php://input");
    if (isset($postdata)) 
        $request = json_decode($postdata);
        $username = $request->username;

        if ($username != "") 
            echo "Server returns: " . $username;
        
        else 
            echo "Empty username parameter!";
        
    
    else 
        echo "Not called properly with username parameter!";
    
?>

请注意,我在此示例中使用的是 PHP,但基本上它在任何其他语言中都差不多。只需在谷歌上搜索“如何以 xyz 语言创建 API”,您就应该在线获得足够多的关于如何实现这一目标的教程。当然,这里的确切代码必须适合您的确切情况,在这里您基本上要么做一些数据库查询,要么获取一些其他数据,然后将其作为 json 提供。

要与此 API 交互,您可以像这样简单地使用 Angular 的 $http 服务:

controller('AppCtrl', function($scope, $http) 
    $scope.data = ;

    $scope.submit = function()
        var link = 'http://your-server.com/api.php';

        $http.post(link, data : $scope.data).then(function (res)
            $scope.response = res.data;
        );
    ;
);

【讨论】:

以上是关于如何使用 firebase.com 创建 api 模拟器?的主要内容,如果未能解决你的问题,请参考以下文章

迭代 Firebase 中的子快照

Firebase“一次”事件不返回承诺

如何在新的 Firebase 控制台中检查数据库和存储使用情况

如何从 Firebase 获取服务器时间

如何使用firebase在android应用启动时查询“列表数据”?

如果我使用 Firebase 简单的用户名和密码身份验证,如何返回用户列表