【发布时间】:2013-12-09 10:19:36
【问题描述】:
我需要支持不同的响应格式,如 JSON 和 HTML,到目前为止,JSON 响应格式很好,现在我尝试支持来自我的 API 的 HTML 响应并面临问题。
我需要从一些 API 返回 JSON 响应,从一些 API 返回 HTML 响应,但所有 API(方法)都存在于同一个类中。
如果我在支持的格式列表中添加 JSON 和 HTML,那么所有 API 都只返回 HTML 响应,不知道如何管理这种情况。
$r->setSupportedFormats('JsonFormat', 'HtmlFormat');
这是我用来在支持的格式列表中设置 JSON 和 HTML 的代码块,请任何人告诉我如何处理这种情况。
index.php
使用 Luracast\Restler\Defaults; 使用 Luracast\Restler\Filter\RateLimit; 使用 Luracast\Restler\Format\UploadFormat; 使用 Luracast\Restler\Format\HtmlFormat; 使用 Luracast\Restler\Restler; require_once '供应商/restler.php'; require_once('config.php'); 默认值::$throttle = 20; 默认值::$cacheDirectory = PLAY_API_CACHE_DIR; //设置restler $r = 新的 Restler(); $r->addAPIClass('test'); $r->addAPIClass('资源'); $r->addFilterClass('RateLimit'); $r->setSupportedFormats('JsonFormat', 'UploadFormat', 'HtmlFormat'); $r->句柄();test.php
require_once 'BaseHandler.php'; 类测试扩展 BaseHandler { // 初始化 API 类属性 公共函数 __construct() { 父::__construct(); } /** * 按类别请求用户同步数据的细分。 * * @param string $auth_token SSO 身份验证令牌 * * @url 获取 getStorageUsage */ 公共函数 getStorageUsage($auth_token = '') { // 必填参数校验 if (!$auth_token && isset($_SESSION['play_auth_token'])) $auth_token = $_SESSION['play_auth_token']; if (!$auth_token ) return PlayErrorCodes::throwParameterMissingError(); // 使用 Sync API 调用按类别获取用户同步数据的细分 return $this->callAPI('sync', 'getStorageUsage', array('auth_token' => $auth_token)); } /** * 请求以图形方式表示用户数据的完整 HTML 文档 * * @param string $auth_token SSO 身份验证令牌 * @param string $client 请求小部件的客户端的名称。 android 是唯一可接受的默认值。 * @param string $path 要显示的资源的路径。默认为“/” * * @url 获取 getWidget * @view getWidgetView */ 公共函数 getWidget($auth_token = '',$client = '',$path = '') { // 必填参数校验 if (!$auth_token && isset($_SESSION['play_auth_token'])) $auth_token = $_SESSION['play_auth_token']; if (!$auth_token) return PlayErrorCodes::throwParameterMissingError(); // 使用 Sync API 调用以图形方式获取表示用户数据的完整 HTML 文档 $this->resDecodeFlag = false; return $this->callAPI('sync', 'getWidget', array('auth_token' => $auth_token, 'client' => $client, 'path' => $path)); } }这里我需要为“getStorageUsage”返回 JSON 响应,为“getWidget”返回 HTML 响应。
我看过的参考资料是:
http://restler3.luracast.com/examples/_013_html/readme.html
https://github.com/Luracast/Restler/tree/master/public/examples/_013_html#html-format
在此先感谢... Siva。
【问题讨论】:
-
到目前为止您尝试了什么,您的代码在哪里?我们无法审查我们无法阅读的代码。您遇到了什么错误,您似乎在哪里失败了?
-
@Luceos:用代码块更新了我的问题。在设置 HtmlFormat 支持后,这里没有任何错误,所有 API 都返回 HTML 响应。
-
通话怎么样。 Restler 根据您发送的 Accept Header 识别返回格式。因此,如果您从浏览器调用您的网络服务,它将返回 HTML。