我想向/register/save
发送帖子。
/**
* @Route("/register/save/{data}", methods={"POST", "HEAD"})
* @param $data
*/
public function save($data) {
var_dump($data);
}
如果我在浏览器中调用URL localhost/register/save
(没有任何数据),则会收到消息
找不到“获取/注册/保存”的路由
如果使用Postman以JSON作为正文来调用URL,我会收到消息
找不到“ POST / register / save”的路由(找不到404)
在没有${data}
的情况下,该路由有效。
我在做什么错了?
答案 0 :(得分:1)
通过POST
方法,参数在请求正文中传递,而不是作为url参数传递,因此由于缺少参数,路由甚至不匹配。
/**
* @Route("/register/save/", methods={"POST", "HEAD"})
*/
public function save(Request $request) {
if ("POST" === $request->getMethod()) {
var_dump($request->request->get('data'));
}
}
请参阅Request
object的一些示例。
答案 1 :(得分:0)
这里有两个问题:
1)无法将发布数据设置为查询参数,因此它不应成为路由网址的一部分。
2)可以使用内置的symfony软件包 request 接收数据。
所以这是修改后的代码:
/**
* @Route("/register/save", methods={"POST", "HEAD"})
*
*/
public function postSave(Request $request)
{
var_dump($request->request->all());
}
注意:路径网址的末尾不应有反斜杠。