我正在Laravel中开发一个安静的API解决方案。我的问题是我不能让我的商店功能接受JSON。 在我的商店功能中,我有以下代码(基于本教程http://code.tutsplus.com/tutorials/laravel-4-a-start-at-a-restful-api-updated--net-29785):
public function store()
{
$url = new Url;
$url->url = Request::get('url');
$url->description = Request::get('description');
$url->save();
return Response::json(array(
'error' => false,
'message' => 'test',
'urls' => $url->toArray()),
200
);
}
当我发送这样的数据时:
curl -d "url=test&description=testing" localhost/api/v1/url
它按预期工作,并将记录插入我的数据库。
然而,当我尝试发布一些像这样的JSON时
curl -d '{"url":"test","description":"test"}' localhost/api/v1/url
我甚至无法使用Request :: get(' url')返回数据。我已经在这里读到了Input :: all()或Input :: json() - > all()可以工作,但我仍然无法返回我发布的数据。 任何想法如何在发布为JSON时访问URL和描述?
答案 0 :(得分:4)
你没有正确使用curl发布json,试试这个:
curl -X POST -H "Content-Type: application/json" -d '{"url":"test","description":"test"}' localhost/api/v1/url
如果您使用的是Windows客户端,则可以使用Chrome插件Postman(http://www.getpostman.com/)。
将其配置为:
1)POST
2)原始(并将你的json粘贴在盒子里)
3)标题:内容类型值:application / json
要进行测试,您可以使用这样的简单路由器:
Route::any('test', function() {
Log::info(Input::all());
});
执行
php artisan tail
查看发布时会发生什么。