我是Laravel的新手,我想知道我是否以正确的方式执行跟随API。Laravel - 使用Rest API JSON的原始查询
我有一个移动应用程序,这将使有大约的位置餐馆的请求,发送该URL与参数(LNG,LAT,RAD):
localhost/restaurant/@59.931412,59.931342,15
我想出了这条路线时刻:
Route::get('restaurants/@{latitude},{longitude},{radius}', '[email protected]'})
->where(['latitude' => '[0-9]+', 'longitude' => '[0-9]+', 'radius' => '[0-9]+']);
但我看到,如果我想让它其余的我应该使用:
Route::resource('restaurants', 'RestaurantsController');
我不明白的是:
- 我该如何传递参数?
- 移动应用应该发送一个GET动词,我必须在控制器中创建一个 'show'方法?
- 而不是在路线参数验证,我不得不在方法开始时使用 中间件,对吧?
奖励:我的查询写得不错,是否安全?
public function show($latitude, $longitude, $radius)
{
//Middleware to control parameters later
$results = DB::select(
'SELECT * (3959 * acos(cos(radians(:latitude)) *
cos(radians(lat)) * cos(radians(lng) - radians(:longitude)) +
sin(radians(:latitude)) * sin(radians(lat)))) AS distance FROM events HAVING
distance < :radius ORDER BY distance LIMIT 0 , 20',
["latitude" => $latitude, "longitude" => $longitude, "radius" => $radius]);
return Response::json($results);
}
编辑:这是在我的头这么乱,我有我想出了一个帖子标题我的问题有点不同这么多问题,不好意思。
更新1: 这里是我的路线
Route::get('restaurants/@{latitude},{longitude},{radius}', '[email protected]');
和我的请求规则(谁在控制器注入)
public function rules()
{
return [
'latitude' => 'required|digits_between:-90,90',
'longitude' => 'required|digits_between:-180,180',
'radius' => 'required|numeric',
];
}
我遇到的页面“的页面ISN” t正确重定向“ 并在日志中我有”无效的请求(意外的EOF)“
i使用手工和我的网址是:http://localhost:8000/restaurants/@59.93141200,30.31992300,15
无需控制器的要求,路径工程... 我试着像puting“要求只针对单独纬度,它仍然不希望访问请求处理简单的规则。
问题来自于要求(要求:验证字段必须存在于输入数据中。),我不明白这里的值。
而不是使用DB:查询,如果你可以使用Laravel Eloquent,那么它更安全。 –