PHP API,具有灵活的请求/响应json/xml结构


PHP API with flexible structure request/response json/xml

我正在尝试在PHP(web服务)上创建一个API,几乎所有我需要做的请求都是获取项目列表,这些项目可能有自己的字段或其他对象,该API将用于不同的项目,而不是所有项目都需要相同的信息,因此我试图创建一个灵活的请求,以获取我在json或xml上需要的结构。

如果不为ea-parm创建一个大url或一个大解析器,我不知道如何发出请求。

如何在web上发送结构请求???

实际请求/响应。

请求示例:

Http://myphpapi.php/getEmploees.php

示例响应:

{"employees":[
{"firstName":"John", "lastName":"Doe", "Departament":"1"},
{"firstName":"Anna", "lastName":"Smith", "Departament":"2"},
{"firstName":"Peter", "lastName":"Jones", "Departament":"1"}]}

我想归档的是:

请求示例:

Http://myphpapi.php/getEmploees.php?{employess.firstName,Departament.name}

示例响应:

{"employees":[
{"firstName":"John", "Departament":{"name":"D1"}},
{"firstName":"Anna", "Departament":{"name":"D2"}},
{"firstName":"Peter", "Departament":{"name":"D1"}}]}

只需为请求创建参数(或使用不同的url)。至少所有的API都是这样工作的:

Request url for item:
GET: http://api.project.com/item/{id}
Request url for list:
GET: http://api.project.com/list/
Request parameter for list:
GET: http://api.project.com/list/
DATA: possible_fields:
[
    "employees":
    [
        "first_name",
        "last_name",
        "departament":
        [
            "name",
            "number",
            "floor",
        ]
    ],
    "bosses"
    [
        "first_name",
        "last_name",
        "departament":
        [
            "name",
            "number",
            "floor",
        ]
    ],
]

并且只返回请求的项目。

$data = [
    "employees" => [
        "first_name",
        "departament" => [
            "name"
        ]
    ],
];
Guzzle::get('http://api.project.com/list/', [
    'headers' => [
        'Content-Type' => 'application/json',
    ],
    'json' => $data,
]);

这只能返回员工的名字和部门名称。