在浏览器URL中调用Laravel 4 Restful curl

时间:2014-02-14 01:18:45

标签: laravel-4 restful-url

我在这里完成了这个Laravel 4 Restfull教程 - http://code.tutsplus.com/tutorials/laravel-4-a-start-at-a-restful-api-updated--net-29785

我想要做的是测试浏览器URL中的Restful链接:

curl命令:

$ curl -i --user firstuser:first_password -d 'url=hxxp://google.com&description=A Search Engine' www.lrvlapp.com/api/v1/url

运行正常,并按预期返回json:

{"error":false,"message":"URL created"}

浏览器网址:我试试这个:

www.lrvlapp.com/api/v1/url?url=hxxp://google.com&description=A Search Engine

没有给出任何错误或任何内容,也没有将数据库插入数据库。

这是UrlController

类UrlController extends \ BaseController {

/**
 * Display a listing of the resource.
 *
 * @return Response
 */
public function index()
{
    return 'Hello, API';
}

/**
 * Show the form for creating a new resource.
 *
 * @return Response
 */
public function create()
{
    //
}

/**
 * Store a newly created resource in storage.
 *
 * @return Response
 */
public function store()
{
    $url = new Url;
    $url->url = Request::get('url');
    $url->description = Request::get('description');
    $url->user_id = Auth::user()->id;

    // Validation and Filtering is sorely needed!!
    // Seriously, I'm a bad person for leaving that out.

    $url->save();

    return Response::json(array(
        'error' => false,
        'message' => 'URL created')
    );
}

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return Response
 */
public function show($id)
{
    //
}

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return Response
 */
public function edit($id)
{
    //
}

/**
 * Update the specified resource in storage.
 *
 * @param  int  $id
 * @return Response
 */
public function update($id)
{
    //
}

/**
 * Remove the specified resource from storage.
 *
 * @param  int  $id
 * @return Response
 */
public function destroy($id)
{
    //
}

}

www.lrvlapp.com实际上是我通过hosts文件和apache Virtual Host设置的虚拟主机

实际位置位于:c:\ xampp \ htdocs \ lrvlapp \ public

谢谢你的回答

1 个答案:

答案 0 :(得分:1)

当您通过浏览器请求时,您发出的是GET请求,而该请求又会调用索引方法。 您需要提交POST请求以保存网址。然后它将调用store方法。这是节约资源的标准方式。

您可以在文档中获得更多说明:http://laravel.com/docs/controllers#resource-controllers

修改: 如果你想在这种情况下使用jquery进行ajax调用(POST),你可以调用如下:

$.ajax({
            type: 'POST',
            url: 'www.lrvlapp.com/api/v1/url',
            data: { url: "http://google.com", description: "A Search Engine" },
            dataType: 'json',
            success: function(data) {
                 <do your actions, for example show some message>          
                 $('#div-id').html(data);
            },
            error: function(jqXHR, textStatus, errorThrown) {
                $('#div-id').html('Error: , ' + textStatus + ', ' + errorThrown);

            }
        });