laravel REST api post 方法

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/25443549/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 09:58:44  来源:igfitidea点击:

laravel REST api post method

mysqlrestlaraveleloquent

提问by Ahmed Karmous

im making an api in laravel but when i send from a post request it display nothing it work only when i send the values in the url what im i doing wrong here is my code !

我在laravel中制作了一个api但是当我从一个post请求发送它时它什么都不显示它只有当我在url中发送值时它才起作用我在这里做错的是我的代码!

$user = new userInscription;

            $user->nom = Request::get('name');
            $user->pseudo = Request::get('pseudo');
            $user->userId = Request::get('userId');
            $user->hasFiat = Request::get('hasFiat');
            $user->optin = Request::get('optin');
            $user->mail = Request::get('mail');

            $pseudo = Input::get('pseudo');
            $userId = Input::get('userId');
            $hasFiat = Input::get('hasFiat');

    if($pseudo == '' || $hasFiat == '' )
        {
            return Response::json( array(
            'status'  => 'ko',
            'message'  => 'missing mandatory parameters')
            );
        }

    else if($userId == '')
        {
            if( $user->save() )
            {
                $id = DB::table('user')
                ->where('pseudo','LIKE',$pseudo)
                ->pluck('userId');

                return Response::json(array(
                    'status'  => 'ok',
                    'message'  => 'success',
                    'userId' => $id
                ));
            }
            else
            {
                return Response::json(array(
                    'message'  => 'error while saving this user !!',   
                ));
            }
        }

回答by JofryHS

Laravel REST-ful (Resourceful) controlllers has pre-configured routes (can be re-configured):

Laravel REST-ful (Resourceful) 控制器具有预先配置的路由(可以重新配置):

According to : http://laravel.com/docs/controllers#resource-controllers

根据:http: //laravel.com/docs/controllers#resource-controllers

+-----------+---------------------------+---------+------------------+
|   Verb    |           Path            | Action  |    Route Name    |
+-----------+---------------------------+---------+------------------+
| GET       | /resource                 | index   | resource.index   |
| GET       | /resource/create          | create  | resource.create  |
| POST      | /resource                 | store   | resource.store   |
| GET       | /resource/{resource}      | show    | resource.show    |
| GET       | /resource/{resource}/edit | edit    | resource.edit    |
| PUT/PATCH | /resource/{resource}      | update  | resource.update  |
| DELETE    | /resource/{resource}      | destroy | resource.destroy |
+-----------+---------------------------+---------+------------------+

Referencing the table each of the Verb must correspond to the action method in the controller.

引用该表的每个 Verb 必须对应于控制器中的操作方法。

For example if your Resourceful Route is registered as:

例如,如果您的 Resourceful Route 注册为:

Route::resource('user', 'userInscriptionController');

Then to POST to userresource, you need to have userInscriptionController@storeaction (i.e. method called store()in your userInscriptionController.

然后要发布到user资源,您需要userInscriptionController@store采取行动(即store()在您的userInscriptionController.

To avoid manually creating each of these actions, you can use Laravel's artisan controller:make

为了避免手动创建这些动作,你可以使用 Laravel 的 artisan controller:make

php artisan controller:make userInscriptionController

which will generate all these actions for you, then you just need to fill in your logic to complete the resource.

这将为您生成所有这些操作,然后您只需要填写您的逻辑即可完成资源。

回答by jainvikram444

if request is GET then:

如果请求是 GET 则:

if (Request::isMethod('get'))
{
$user = new userInscription;

            $user->nom = Request::get('name');
            $user->pseudo = Request::get('pseudo');
            $user->userId = Request::get('userId');
            $user->hasFiat = Request::get('hasFiat');
            $user->optin = Request::get('optin');
            $user->mail = Request::get('mail');

            $pseudo = Input::get('pseudo');
            $userId = Input::get('userId');
            $hasFiat = Input::get('hasFiat');

    if($pseudo == '' || $hasFiat == '' )
        {
            return Response::json( array(
            'status'  => 'ko',
            'message'  => 'missing mandatory parameters')
            );
        }

    else if($userId == '')
        {
            if( $user->save() )
            {
                $id = DB::table('user')
                ->where('pseudo','LIKE',$pseudo)
                ->pluck('userId');

                return Response::json(array(
                    'status'  => 'ok',
                    'message'  => 'success',
                    'userId' => $id
                ));
            }
            else
            {
                return Response::json(array(
                    'message'  => 'error while saving this user !!',   
                ));
            }
        }

}

=================== if request is POST then:

==================== 如果请求是 POST 则:

if (Request::isMethod('post'))
{
$user = new userInscription;

            $user->nom = Request::post('name');
            $user->pseudo = Request::post('pseudo');
            $user->userId = Request::post('userId');
            $user->hasFiat = Request::post('hasFiat');
            $user->optin = Request::post('optin');
            $user->mail = Request::post('mail');

            $pseudo = Input::post('pseudo');
            $userId = Input::post('userId');
            $hasFiat = Input::post('hasFiat');

    if($pseudo == '' || $hasFiat == '' )
        {
            return Response::json( array(
            'status'  => 'ko',
            'message'  => 'missing mandatory parameters')
            );
        }

    else if($userId == '')
        {
            if( $user->save() )
            {
                $id = DB::table('user')
                ->where('pseudo','LIKE',$pseudo)
                ->pluck('userId');

                return Response::json(array(
                    'status'  => 'ok',
                    'message'  => 'success',
                    'userId' => $id
                ));
            }
            else
            {
                return Response::json(array(
                    'message'  => 'error while saving this user !!',   
                ));
            }
        }

}

回答by webNeat

From your comment, you are using

根据您的评论,您正在使用

Route::resource('user', 'userInscriptionController');

which will generate following routes

这将生成以下路线

Verb        |   Path                    | Action        | Route Name
------------------------------------------------------------------------
GET         | /resource                 | index         | resource.index
GET         | /resource/create          | create        | resource.create
POST        | /resource                 | store         | resource.store
GET         | /resource/{resource}      | show          | resource.show
GET         | /resource/{resource}/edit | edit          | resource.edit
PUT/PATCH   | /resource/{resource}      | update        | resource.update
DELETE      | /resource/{resource}      | destroy       | resource.destroy

And as you can see, the only action allowing postis store. So you should use this one or add postroute for an other method like this :

正如您所看到的,唯一允许的操作poststore. 因此,您应该使用此post方法或为其他方法添加路由,如下所示:

Route::post('your_url', array('as' => 'your_route_name', 'uses' => 'YourController@yourMethod')); 

I hope it's clear now

我希望现在清楚了