0

我有一个请求,其中大部分输入参数都作为 JSON 请求对象放入。出于文档目的,我想指定用户可以输入的最常见字段,但是将进入 JSON 请求的名称值有很多可变性,我不想记录所有这些字段很麻烦。

这是我现在拥有的屏幕截图:

资源管理器中的 API

例如,如果我想放入一个名为“people-with”的 JSON 属性并将其设置为“['joe','paul','jane'] 那么这在 JSON 中很容易做到,但我该怎么做在我的 PHP/Restler 代码中选择它。现在这个服务的签名是:

/**
 * ADD an Activity
 *
 * Add a new action to a user's stream
 *
 * @url POST /{user_id}
 *
 * @param integer   $user_id    The user_id for whom the actions apply; you can insert the text "self" and it will resolve to the current/default user
 * @param string    $start_time {@from body} The date/time that the activity was started (YYYY-MM-DD or YYYY-MM-DD HH:mm:SS)
 * @param string    $action     {@from body} The action "slug name" that uniquely identifies an action
 * @param string    $end_time   {@from body} The date/time that the activity concluded (YYYY-MM-DD or YYYY-MM-DD HH:mm:SS)
 * @param string    $app_id     {@from body} The application that captured this activity
 * @param string    $proxy_user_id  {@from body} The person who captured this activity for the individual
 * @param string    $location   {@from body} The location information associated with this activity
*/
public function add_action ($user_id, $start_time, $action, $end_time=null, $app_id=null, $proxy_user_id=null, $location=null)
{
    // implement
}

ps 作为附注,我暂时将此 API 服务更改为 PUT 以避免几天前提出的 POST 问题,这在使用 POST 时也影响了我。

4

1 回答 1

0

好的,解决这个问题的关键在于$request_data关联数组。因此,为了实现(关键字段的)文档和能够将值动态接收到 POST/PUT 服务中,您只需执行以下操作:

/**
 * ADD an Activity
 *
 * Add a new action to a user's stream
 *
 * @url PUT /{user_id}
 *
 * @param integer   $user_id    The user_id for whom the actions apply; you can insert the text "self" and it will resolve to the current/default user
 * @param string    $start_time {@from body} The date/time that the activity was started (YYYY-MM-DD or YYYY-MM-DD HH:mm:SS)
 * @param string    $action_nm  {@from body} The action "slug name" that uniquely identifies an action
 * @param string    $end_time   {@from body} The date/time that the activity concluded (YYYY-MM-DD or YYYY-MM-DD HH:mm:SS)
 * @param string    $app_id     {@from body} The application that captured this activity
 * @param string    $proxy_user_id  {@from body} The person who captured this activity for the individual
 * @param string    $location   {@from body} The location information associated with this activity
*/
public function add_activity ($user_id, $start_time, $action_nm, $end_time=null, $app_id=null, $proxy_user_id=null, $location=null, $request_data=null)

请注意,没有@paramfor $request_data 但 $request_data 现在挂在函数签名的末尾。'test' : 'me'现在想象我在请求的 JSON 中传递了以下内容。现在我可以在我的处理程序中得到它:

echo $request_data['test']; // prints "me"

这很有效,并且文档看起来也符合预期(请参见上面的屏幕截图)。

最后一点,对于那些好奇的人,您可以通过 $request_data 数组访问所有 J​​SON 变量。这意味着:

echo ($request_data['user_id'] === $user_id); // TRUE
于 2013-02-05T13:07:02.790 回答