可以說我有一個叫約翰與PARAMS型號:Backbone.js的並用的Silex(PHP)的REST API
{
Language : {
code : 'gr',
title : 'Greek'
},
Name : 'john'
}
所以現在,當我觸發John.save()
它公佈這些服務器:
post params http://o7.no/ypvWNp
與頭:
在Silex的代碼是非常簡單的:
<?php
require_once __DIR__.'/silex.phar';
$app = new Silex\Application();
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
// definitions
$app['debug'] = true;
$app->post('/api/user', function (Request $request) {
var_dump($request->get('Name'));
$params = json_decode(file_get_contents('php://input'));
var_dump($params->Name);
});
$app->run();
但首先var_dump
返回NULL當然第二的var_dump工作,因爲我直接從php://input
資源獲取請求。我不知道我怎麼會從Silex的
感謝
你好,非常感謝!這是一個解決方案!儘管我相信Silex應該在默認情況下保留它,而不需要添加'before'過濾器。關於內容類型,'$ request-> headers-> get('Content-Type')'返回application/json; charset = UTF-8',所以我寧願這樣檢查:if('application/json'=== strstr($ request-> headers-> get('Content-Type'),';',true) )'或者更像這樣:'if(false!== strpos($ request-> headers-> get('Content-Type'),'application/json'))' – panosru 2012-01-04 22:09:25
'0 === strpos ('even,will adjust my answers。 – igorw 2012-01-04 22:13:46
從php手冊:'此函數可能返回布爾FALSE,但也可能返回一個非布爾值,其值爲FALSE,如0或「」。「,所以我傾向於使用false而不是0 :) – panosru 2012-01-04 22:15:04