如何创建Laravel api路由的endpointquery参数?

问题描述 投票:0回答:2

我想使用数据库中的一些字段来过滤json响应, 例如 apiv1user?username=mary, 但是不知道怎么做. 我的第二个问题是,路由apiv1user3可以使用,但我不记得我是如何设置的,因为我是在一段时间前设置的。谁能帮帮我?

api.php

Route::group(['prefix' => 'v1'], function () {
Route::apiResource('/user', 'UserController');
});

用户资源

public function toArray($request)
    {
                return parent::toArray($request); 
    }

用户控制器


public function show(User $user): UserResource
    {
        return new UserResource ($user);
    }

 public function index(): UserResourceCollection
    {
            return new UserResourceCollection(User::orderBy('created_at', 'desc')
        ->paginate(5)

    );

    }

 public function store(Request $Request)
    {
        $request->validate([
            'first_name' => 'required',
            'last_name' => 'required',
            'email' => 'required',
        ]);

        $user = User::create($request->all());

        \Mail::to($user)->send(new Welcome);
        return new UserResourse($user);
    }


public function update(User $user, Request $request): UserResource
    {
        $user->update($request->all());
        return new UserResource($User);
    }

public function destroy(User $user)
    {
        $user->delete();
        return response()->json();
    }

}

已更新

我看到了好几个教程,有网友给出了下面的建议,但是我不知道怎么拼,因为我上面已经有了一个显示方法。 我试着把这个显示方法注释掉,然后为查询字符串创建另一个显示方法。

public function show(User $user): UserResourceCollection
    {
       $request->input('username'); 
       return new UserResourceCollection(User::orderBy('created_at', 'desc')
       ->where('username', '=', $username)
        ->paginate(2)

    );

    }

并增加了一个GET途径

Route::group(['prefix' => 'v1'], function () {
Route::apiResource('/user', 'UserController');

Route::get('/user/{username?}','UserController@show');
});

这是作为一个端点工作。分页部分是工作的,我把它做得更小,所以我知道它在调用方法,但它是按id搜索的,而我想按用户名搜索。理想情况下,我想使用一个查询参数,比如apiv1user?username=mary。

laravel rest
2个回答
0
投票

为了得到json请求,你可以调用 $request->input('name') 比如说,你可以在controller上设置资源操作。

你可以在控制器上设置资源操作。例如,你可以在控制器上创建 UserController.show 的方法。所以, GET /user/{id} 方法将由 UserController.show

更多的例子,你看 文件.


0
投票

我觉得不可能创建api的url参数。 我又开始使用这个教程

https:/www.youtube.comwatch?v=z3YPhYwcbBM.

这种方式意味着我总是要知道id(通过产品id搜索,而不是通过查询搜索过滤评论),这并不理想。

例如 http:/localhost:8000apiv1products2reviews。

然而我可以添加更多的端点来代替评论,比如分类等。

© www.soinside.com 2019 - 2024. All rights reserved.