1

Angular JS で Laravel 4 を使用して、RESTful コントローラーを使用して $http リクエストを処理しています。

UserController次の機能を持つRESTful コントローラーがあります。

public function getIndex(){
    //is Request::get() the correct way to get the parameter?
    echo json_encode(array(
      'username'=>User::countUsername(Request::get('name')),
      'email'=>User::countEmail(Request::get('email'))
    ));
}

public function postIndex(){
    //don't know how to get parameter
}

私が行っている $http GET および POST リクエストは以下のとおりです。

得る

//is this url the correct way to send in my parameters for GET request?
dataString = 'name='+username+'&email='+email;
$http.get('user?'+dataString).success(
    //do something with returned json
)

役職

data = {
   'username':username,
   'email':email,
   'password':password
}
$http.post('user', data).success(
    //do something
)

このgetIndex()方法は問題なく機能しますが、正しい手順を使用しているかどうかは疑問です。

上記について、2 つの質問があります。

  1. Request::get()XHR GET からパラメーターを取得する正しい方法はありますか? Javascript の URL に追加dataStringすることは、RESTful な方法でパラメーターを送信する正しい方法ですか?

  2. XHR POST から送信された JSON オブジェクトを取得するにはどうすればよいですか? Request::get()とを含むいくつかの方法を試しInput::json()ましたが、うまくいきませんでした。

前もって感謝します。

4

1 に答える 1

2

$input = Input::all()angular $http を使用して送信されたデータを取得するために使用する必要があります。次に、のように使用します$name = $input['name'];

また、更新された Laravel 4 を使用している場合、RESTful API を使用する最良の方法は、

コントローラーはこんな感じで、

<?php


class UsersController extends BaseController {

    /**
     * Display all users.
     *
     * @return Response
     * GET http://localhost/laravel/users
     */

    public function index() {
        $users = User::all();
        return $users;
        //return View::make('users.index')->with('users', $users);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return Response
     */

    public function create() {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @return Response
     * POST http://localhost/laravel/users
     */

    public function store() {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return Response
     * GET http://localhost/laravel/users/1
     */

    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
     * PUT http://localhost/laravel/users/1
     */

    public function update($id) {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return Response
     * DELETE http://localhost/laravel/users/1
     */

    public function destroy($id) {
        $user = User::find($id);

        $user->delete();

        return Response::json(array(
            'error' => false,
            'message' => 'User Deleted'),
            200
        );
    }

}

あなたのルートでは、

Route::resource('users', 'UsersController');

angularスクリプトの使用では、

var app = angular.module('myApp', []);
// include this in php page to define root path
app.factory('Data', function(){
    return {
        root_path: "<?php echo Request::root(); ?>/"
    };
});

GET - すべてのユーザーを取得します

$http({method: 'GET', url: Data.root_path + 'users'}).
success(function(data, status, headers, config) {
    $scope.users = data.users;
}).
error(function(data, status, headers, config) {
    $scope.users = [];
});

GET - 編集のために単一のユーザーを取得します

$http({method: 'GET', url: Data.root_path + 'users/'+id}).
success(function(data, status, headers, config) {
    $scope.entry = data.users[0];
}).
error(function(data, status, headers, config) {
    $scope.entry = [];
});

PUT - 単一ユーザーの更新

$http.put(Data.root_path + 'users/'+entry.id, entry).
success(function(data, status, headers, config) {
    //
}).
error(function(data, status, headers, config) {
    //
});

POST - 新しいユーザーを保存

$http.post(Data.root_path + 'users', entry).
success(function(data, status, headers, config) {
    //
}).
error(function(data, status, headers, config) {
    //
});

DELETE - ユーザーを削除します

$http.delete(Data.root_path +'users/'+id)
.success(function(response) { 
    //
})
.error(function(response) {
    //
});
于 2013-10-05T10:46:55.043 に答える