【问题标题】:JSON stub string delivered via php通过 php 传递的 JSON 存根字符串
【发布时间】:2011-01-18 15:21:14
【问题描述】:

我想制作一个可以测试我的客户端的 Web 服务存根。我已经写下了 像这样的一些 JSON:

{
    "response": {
        "success": true,
        "meta" : "tags",
        "data": [
            {
                "first_name" : "John",
                "last_name" : "Doe",
                "age" : 30 
            },
            {
                "first_name" : "Jane",
                "last_name" : "Doe",
                "age" : 25 
            } 
        ] 
    }
}

我没有 PHP 经验可谈。 我该如何制作一个

webserver.com/get_names.php?first_name=john&last_name=doe&age=30

返回上述 JSON 的脚本。

它不应该对参数进行任何评估,这就是它在针对服务器实现时最终被调用的方式,我只希望它正确返回 JSON 字符串,以便我的 JSON 解析器可以运行它,就好像这是实际的服务器响应。

希望有人能帮帮我,提前谢谢你。

【问题讨论】:

    标签: php json


    【解决方案1】:

    按原样保存 JSON 字符串并调用文件 get_names.php。不要忘记在编辑器的另存为对话框中选择UTF-8。如果文件中没有单个 <?php 字符串,则不会将任何内容解析为 PHP。

    您可能还想把它放在文件的顶部:

    <?php
    header('Content-Type: application/json');
    ?>
    

    【讨论】:

    • 您好,阿尔瓦罗,谢谢。我认为你给出了正确的答案 - 所以在我的 JSON 中“粘贴”在你写的 php 下面,将它上传到我的服务器,调用它,返回值是 JSON 字符串?
    • 当然。请记住,&lt;?php ... ?&gt; 之外的任何内容都按原样输出。它不必是 HTML。
    【解决方案2】:

    这通常被称为 API,可以在多个级别上进行开发。

    第一级将是标准流线型 php,您将拥有遵循一般 php 编码的代码。

    $Action = isset($_GET["action"]) ? $_GET["action"] : false;
    
    switch($Action)
    {
        case 'get_names':
            //fetch data and display.
        break;
    }
    

    下一种方法也是最简单的方法是使用 MVC 应用程序框架,我会推荐 Code Igniter,因为它对 bigginner 很友好,并且 URI 结构类似于 API Soap 服务器。

    将 CI 文件复制到 /api/ 路径后,您将扔掉指南并配置您的数据库、库、帮助程序等,您还可以使用 mod_rewrite 设置 URI 约定以获取诸如 /api/get/games/API_KEY 之类的 URL

    你的班级应该是这样的:

    class Get extends Controller
    {
        public function __construct()
        {
            parent::Controller();
        }
    
        public function games($Api = false,$limit = 10, $offset = 0)
        {
            if(!$Api)
            {
                show_error("API Key require to fetch games");
            }
            if(your_api_check($api) === true)
            {
                 //Load the games
                 $games = $this->models->games->get($limit,$offset);
                 $this->output->send(json_encode($games));
            }
        }
    }
    

    显然对参数的验证进行了更广泛的检查,但您将了解它的要点。

    下一个级别对你自己来说会非常复杂,但如果你想坚持这个想法,那么你可能想研究一下Simple Object Access Protocol,但这留给你自己决定。

    链接:

    【讨论】:

    • 谢谢罗伯特,有一个人在做 API,我想测试我的客户端以确保它正确处理来自服务器的 JSON。但我真的很想学习如何推出自己的 API,所以感谢您提供的“入门工具包”:)
    【解决方案3】:

    您可以在您的网络服务器上将其保存为 get_names.php。

    <?php
    
    $my_associative_array = array(
        'response' => array(
            'success' => true,
            'meta' => 'tags',
            'data' => array(
                array(
                    'first_name' => 'John',
                    'last-name' => 'Doe',
                    'age' => 30,
                ),
                array(
                    'first_name' => 'Jane',
                    'last_name' => 'Doe',
                    'age' => 25
                ),
            ),
        ),
    );
    
    echo json_encode($my_associative_array);
    

    或者,您可以创建一个看起来与您的 JSON 完全相同的 .txt 文件。

    你也可以把它指向我的服务器,上面的脚本可以运行:http://dorkitude.com/example_4725873.php

    【讨论】:

    • 谢谢:) 我想按原样使用 JSON。这只是为了测试我的解析器/网络代理类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 2020-03-10
    相关资源
    最近更新 更多