我想使用Symfony2和FOSRestBundle建立一個API的POST。以下功能測試返回OK。POST JSON返回400捲曲,但功能測試工作
public function testPostArticleAction(){
$this->client->request(
'POST',
'/api/v1/articles.json',
array(),
array(),
array('CONTENT_TYPE' => 'application/json'),
'{"articleContent":"The content of the content"}'
);
$response = $this->client->getResponse();
$this->assertJsonResponse($response,201, false);
}
但是,當我嘗試通過捲曲發送請求以相同的請求主體,它給了我一個400的無效JSON消息:
{「代碼」:400,「消息」:」無效JSON消息中接收 「}
下面是我曾嘗試捲曲命令:
捲曲-X POST -d「{ 」articleContent「:」 標題1" }」 http://localhost:8000/api/v1/articles --header 「內容類型:application/JSON」
捲曲-X POST -d '{ 「articleContent」: 「TITLE1」}' http://localhost:8000/api/v1/articles.json
請到注意,GET返回我JSON,如:
{ 「ID」:68, 「article_content」: 「內容的內容」}
但我的領域是articleContent
在我的教條映射文件。我錯過了什麼? 非常感謝您的幫助。
我用Content-Type無效。另外,當我刪除它時,我現在得到一個SQL完整性約束違規錯誤(不能將null填充到列)。然後我沒有認證,(很明顯,因爲我甚至可以到達數據庫層)。我的腦袋是acking,非常感謝你的時間 –
好吧,聽起來你需要通過一些額外的輸入字段。你能看到表格的結構嗎?這可能會給你一些線索。此外,單元測試套件通常會針對測試數據庫運行,該測試數據庫的架構可能不會與curl請求所擊中的數據庫(如果確實存在單獨的數據庫)保持同步。 – curtis1000
實際上,該表是一個帶有'articleContent'作爲列名稱(在phpmyadmin中)的單列表。它也是在doctrine orm文件中的同名。我在深入挖掘你的意見,以檢查更多可能的原因(因爲文檔也指向一些近期問題http://welcometothebundle.com/web-api-rest-with-symfony2-the-best-way-the-post-方法/#這個名稱的表單類型)。再次感謝 –