我如何使用参数在Laravel中创建路由API

时间:2019-05-14 12:45:50

标签: laravel api

我的路线:

Route::get('page/{key_id_fk}', 'PagesApiController@show'); 

我的功能:

public function show($key_id_fk)
{
    $sub=DefintionDetails::find($key_id_fk);

  //  $main=Definition::where([['type','=',1],['available','=',1],['id_definition','=',$sub->id_def]])->get();
    return response()->json($sub , 200);
}

邮递员路线上的page?key_id_fk=1是错误404,但未在数据库中找到密钥,但未读取。

4 个答案:

答案 0 :(得分:3)

您应该访问page/1而不是page?key_id_fk=1,因为您没有在请求网址中使用参数查询。

您的路线格式为page/$key_id_fk

答案 1 :(得分:0)

您在路由中将key_id_fk设置为http://example.com/page/1,并且将参数传递为http://example.com/page?key_id_fk=1,区别在于第一个是 URL路由数据,第二个是 GET参数数据以从URL路由获取数据,而您拥有public function show($key_id_fk),并从GET参数public function show(Request $request)$request->key_id_fk获取数据。

因此将URL更改为此http://example.com/page/1格式 要么 将控制器中的获取方法更改为public function show(Request $request)$request->key_id_fk

答案 2 :(得分:0)

在您的控制器中

Route::get('page', 'PagesApiController@show');

使用Laravel请求捕获您的查询字符串

public function show(Request $request){

    //check if key_id_value is present in your request
    if ($request->has('key_id_fk')) {

    //get the value of your query string
    $sub=DefintionDetails::find($request->query('key_id_fk')); 

    // the rest of your code
}

尝试

http://localhost/page?key_id_fk=1

Laravel Requests

答案 3 :(得分:0)

在路由文件中:

    Route::get('page/{key_id_fk}', 'PagesApiController@show'); 

在控制器中:

public function show($key_id_fk){

    $sub = DefintionDetails::find($key_id_fk); 

    if($sub){
       return response()->json(['success' => true, 'sub' => $sub]);
    } else {
       return response()->json(['success' => false, 'error_message' => 'No data found!']);
    }
}

您的邮递员路线:

http://example.com/page/1