使用POST进行路由以404结尾

时间:2019-09-04 21:48:59

标签: php symfony

我想向/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}的情况下,该路由有效。

我在做什么错了?

2 个答案:

答案 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());
}

注意:路径网址的末尾不应有反斜杠。