试图将GET或POST数据传递给Laravel评论应用程序


Attempting to pass GET or POST data to Laravel commenting application

跟着威士忌。以下GitHub应用程序的io教程:https://github.com/scotch-io/laravel-angular-comment-app

在完成教程后,好奇是否有可能通过URL将信息传递给预期的Laravel应用程序。我在网站上问了这个问题,但回复最多是缓慢的。

这是我的路线信息…

URI: POST api/comments
Name: api.comments.store
Action: CommentController@store

这是我的CommentController代码:

<?php
// app/controllers/CommentController.php
class CommentController extends 'BaseController {
    /**
     * Send back all comments as JSON
     *
     * @return Response
     */
    public function index()
    {
        return Response::json(Comment::get());
    }
    /**
     * Store a newly created resource in storage.
     *
     * @return Response
     */
    public function store()
    {
        Comment::create(array(
            'author' => Input::get('author'),
            'text' => Input::get('text')
        ));
        return Response::json(array('success' => true));
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return Response
     */
    public function destroy($id)
    {
        Comment::destroy($id);
        return Response::json(array('success' => true));
    }
}

这个应用程序的输入是一个表单,但我对记录来自另一个源的评论感兴趣。谢谢你。

您可以使用php中的cURL等任何库,通过提交包含您的post数据的POST请求来完成。但是在这种情况下,请确保为您的store方法的外部请求禁用csrf过滤器,或者生成一个持久令牌并将其保留在巡回服务器(在某个地方,可能在数据库中临时,直到发出请求),所以如果请求携带您生成的令牌,那么您可以检查它是否有效(如果需要)。因为如果你在该方法上启用了csrf,并且请求是从没有令牌的外部资源发出的(Laravel在使用Form类打开表单时自动为表单生成令牌),那么请求无法到达该方法。

cURL请求使用POST方法post数据的例子:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"url of laravel site");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('postvar1' => 'value1')));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);
现在检查响应($server_output)。如果需要传递csrf令牌,则需要将其添加到http_build_query中的array中。这只是一个基本的想法,更多的研究。你也可以检查这个答案