处理laravel api资源存储并创建端点

时间:2017-10-24 06:34:18

标签: vue.js laravel-5.2

我的控制器中有以下内容

class WrittersController extends Controller
{

  public function index()
   {
      return view('backend.writters.dashboard');
   }

 public function store(Request $request){
  //confused on when to use this
 }

public function create(Request $request){
 //add new user functionality

}

现在在我的路线中我想使用资源路线

Route::resource('writters','WrittersController');

现在我的vue axios http端点出现了混乱。我理解我索引是一个获取请求,但是axios没有商店或创建点。

我应该何时使用商店并在vuejs中创建端点

更新我的AXIOS。我正在使用axios

axios.post("url") //how do i go about create and store here

2 个答案:

答案 0 :(得分:1)

当您要创建时,将调用商店功能,即您将创建然后存储。所以我通常从商店内部调用create方法。我这样做只是为了分离代码并使其更具可读性。没有商店或创建http请求。商店使用邮寄请求。所以你需要使用axios的post请求。只需在web.php中使用Route :: resource,然后转到终端并使用

检查路线

php artisan routes (laravel 4) php artisan route:list (laravel 5)

这将列出您注册的所有路线,并告诉您使用哪些功能。

答案 1 :(得分:0)

您使用其他资源的方式与将其用于get请求的方式相同。

假设您的资源路线如下所示。

Route::resource('/mydata', 'MyDataController');

您将按以下方式构建请求。

正如您已经观察到的那样,如果您使用axios.get('/mydata'),则会将其路由到index方法。但是,如果您使用axios.post('/mydata'),Laravel会自动将您转到store方法。

如果您要使用创建操作,请更改网址以使用axios.get('/mydata/create'),然后您将路由到create方法。请注意,create操作不用于创建记录,而是用于获取用户将创建记录的视图,例如表单。然后,您将store使用POST请求在该表单中输入的数据。

如果您想使用PUT(或PATCH),请使用axios.put(/mydata/{some_id}),然后您将路由到update方法。

因此,Laravel会自动为您处理所有路由,具体取决于所请求的类型(GET,POST,PUT / PATCH,DELETE)。您只需要在URL中为需要它的“动词”提供参数。

查看此处的文档link查找标记为“资源控制器处理的操作”的图表或表格,您将看到各种操作,以及用它们访问它们的动词,以及它们各自的URL和路由。

另请注意,您可以根据需要向资源控制器添加自定义方法,但您必须定义路由。您可以通过在路线文件中声明路线来完成此操作,例如在声明实际资源之前web.php

假设您要添加新的帖子方法'archived'以将某些记录标记为不再有效。您可以在路线中执行以下操作。

Route::post('/mydata/archived/{some_id}', 'MyDataController@archive');
Route::resource('/mydata', 'MyDataController');

如上所示,您可以使用axios.put()axios.patch(),并将它们都路由到update方法。有时您需要以不同方式处理这些请求。例如,当使用自动保存功能并且我想在只有一个字段发生更改时验证某些表单数据时,我会使用patch来验证该单个字段,如下所示。

public function update(Request $request, $id)
{

    if($request->isMethod('patch')){
        $this->validateSingle($request);
    }else{
        $this->validateAll($request);
    }

    //....
}