我需要支持不同的響應格式,比如JSON和HTML,到目前爲止,這對於JSON響應格式來說是很好的,現在我試圖支持來自API的HTML響應並面臨問題。對Restler 3 API的HTML響應支持
我需要從某些API返回來自某些API和HTML響應的JSON響應,但是所有API(方法)都出現在同一個類中。
如果我在支持的格式列表中添加JSON和HTML,那麼所有的API都只返回HTML響應,不知道如何管理這種情況。
$r->setSupportedFormats('JsonFormat', 'HtmlFormat');
這是我使用的設置JSON和HTML支持的格式列表中的代碼塊,有人請讓我知道如何處理這種情況。
的index.php
use Luracast\Restler\Defaults; use Luracast\Restler\Filter\RateLimit; use Luracast\Restler\Format\UploadFormat; use Luracast\Restler\Format\HtmlFormat; use Luracast\Restler\Restler; require_once 'vendor/restler.php'; require_once('config.php'); Defaults::$throttle = 20; Defaults::$cacheDirectory = PLAY_API_CACHE_DIR; // Setup restler $r = new Restler(); $r->addAPIClass('test'); $r->addAPIClass('Resources'); $r->addFilterClass('RateLimit'); $r->setSupportedFormats('JsonFormat', 'UploadFormat', 'HtmlFormat'); $r->handle();
test.php的
require_once 'BaseHandler.php'; class test extends BaseHandler { // Initialize API class attributes public function __construct() { parent::__construct(); } /** * Request the breakdown,by category, of a user's synced data. * * @param string $auth_token SSO Authentication Token * * @url GET getStorageUsage */ public function getStorageUsage($auth_token = '') { // Required parameters checkup if (!$auth_token && isset($_SESSION['play_auth_token'])) $auth_token = $_SESSION['play_auth_token']; if (!$auth_token ) return PlayErrorCodes::throwParameterMissingError(); // Get a breakdown,by category, of a user's synced data using Sync API call return $this->callAPI('sync', 'getStorageUsage', array('auth_token' => $auth_token)); } /** * Requests the full HTML document representing a users data graphically * * @param string $auth_token SSO Authentication Token * @param string $client Name of the client requesting the widget. android is the only acceptable and default value. * @param string $path Path of the resource to display. Defaults to '/' * * @url GET getWidget * @view getWidgetView */ public function getWidget($auth_token = '',$client = '',$path = '') { // Required parameters checkup if (!$auth_token && isset($_SESSION['play_auth_token'])) $auth_token = $_SESSION['play_auth_token']; if (!$auth_token) return PlayErrorCodes::throwParameterMissingError(); // Get the full HTML document representing a users data graphically using Sync API call $this->resDecodeFlag = false; return $this->callAPI('sync', 'getWidget', array('auth_token' => $auth_token, 'client' => $client, 'path' => $path)); } }
在這裏,我需要返回 'getStorageUsage' 和HTML,針對 'getWidget' JSON響應。
參考我所經歷是:提前
http://restler3.luracast.com/examples/_013_html/readme.html
https://github.com/Luracast/Restler/tree/master/public/examples/_013_html#html-format
謝謝...溼婆。
那你嘗試至今,這裏是你的代碼?我們無法審查我們無法閱讀的代碼..您會得到什麼錯誤,您似乎在哪裏失敗? – Luceos
@Luceos:用代碼塊更新了我的問題。在設置HtmlFormat支持所有API之後,在這裏沒有收到任何錯誤返回HTML響應。 – Siva
你打電話過得怎麼樣? Restler根據您發送的Accept Header識別返回格式。因此,如果您從瀏覽器調用Web服務,它將返回HTML。 – Luceos