РЕШЕНО Laravel веб-сайт возвращает ошибку 404 для запросов GET - PullRequest
0 голосов
/ 05 мая 2020

Итак, я получил шаблон приложения Flutter, которое извлекает все свои данные с веб-сайта с помощью HTTP-запросов на получение.

У меня есть следующий метод, который получает список ресторанов:

Future<Stream<Restaurant>> getNearRestaurants(LocationData myLocation, LocationData areaLocation) async {
  String _nearParams = '';
  String _orderLimitParam = '';
  if (myLocation != null && areaLocation != null) {
    _orderLimitParam = 'orderBy=area&limit=5';
    _nearParams = '&myLon=${myLocation.longitude}&myLat=${myLocation.latitude}&areaLon=${areaLocation.longitude}&areaLat=${areaLocation.latitude}';
  }
  final String url = '${GlobalConfiguration().getString('api_base_url')}restaurants?$_nearParams&$_orderLimitParam';
  final client = new http.Client();
  final streamedRest = await client.send(http.Request('get', Uri.parse(url)));

  return streamedRest.stream.transform(utf8.decoder).transform(json.decoder).map((data) => Helper.getData(data)).expand((data) => (data as List)).map((data) {
    return Restaurant.fromJSON(data);
  });
}

Однако, когда я меняю переменную url шаблона для своего собственного веб-сайта, приложение зависает, и streamRest возвращается с ошибкой 404 страницы.

Пробные решения:

  • Я окружил его блоком try / catch, и он не дал мне никаких исключений.
  • Я также установил почтальона и проверил свой веб-сайт с помощью оператора GET для того же списка ресторанов, который я пробую получить код флаттера, опубликованный выше, и увидеть это: Скриншот Postman GET
  • Это как если бы мой веб-сайт не мог перенаправить на указанные c страницы в моей папке API. Но все они определены в api. php.

Обновление 1:

My web. php выглядит так https://pastebin.com/QRG300uL. Похоже, это похоже на то, что было предложено ниже

Обновление 2:

Я запустил php artisan route :: list , и он показал что все маршруты кажутся там:

|        | POST      | api/restaurant_reviews                                  | restaurant_reviews.store                 | App\Http\Controllers\API\RestaurantReviewAPIController@store                                   | api                                                  |
|        | GET|HEAD  | api/restaurant_reviews                                  | restaurant_reviews.index                 | App\Http\Controllers\API\RestaurantReviewAPIController@index                                   | api                                                  |
|        | GET|HEAD  | api/restaurant_reviews/create                           | restaurant_reviews.create                | App\Http\Controllers\API\RestaurantReviewAPIController@create                                  | api                                                  |
|        | DELETE    | api/restaurant_reviews/{restaurant_review}              | restaurant_reviews.destroy               | App\Http\Controllers\API\RestaurantReviewAPIController@destroy                                 | api                                                  |
|        | GET|HEAD  | api/restaurant_reviews/{restaurant_review}              | restaurant_reviews.show                  | App\Http\Controllers\API\RestaurantReviewAPIController@show                                    | api                                                  |
|        | PUT|PATCH | api/restaurant_reviews/{restaurant_review}              | restaurant_reviews.update                | App\Http\Controllers\API\RestaurantReviewAPIController@update                                  | api                                                  |
|        | GET|HEAD  | api/restaurant_reviews/{restaurant_review}/edit         | restaurant_reviews.edit                  | App\Http\Controllers\API\RestaurantReviewAPIController@edit                                    | api                                                  |
|        | GET|HEAD  | api/restaurants                                         | restaurants.index                        | App\Http\Controllers\API\RestaurantAPIController@index                                         | api                                                  |
|        | POST      | api/restaurants                                         | restaurants.store                        | App\Http\Controllers\API\RestaurantAPIController@store                                         | api                                                  |
|        | GET|HEAD  | api/restaurants/create                                  | restaurants.create                       | App\Http\Controllers\API\RestaurantAPIController@create                                        | api                                                  |
|        | GET|HEAD  | api/restaurants/{restaurant}                            | restaurants.show                         | App\Http\Controllers\API\RestaurantAPIController@show                                          | api                                                  |
|        | DELETE    | api/restaurants/{restaurant}                            | restaurants.destroy                      | App\Http\Controllers\API\RestaurantAPIController@destroy                                       | api                                                  |
|        | PUT|PATCH | api/restaurants/{restaurant}                            | restaurants.update                       | App\Http\Controllers\API\RestaurantAPIController@update                                        | api                                                  |
|        | GET|HEAD  | api/restaurants/{restaurant}/edit                       | restaurants.edit                         | App\Http\Controllers\API\RestaurantAPIController@edit                                          | api                                                  |
|        | POST      | api/send_reset_link_email                               |                                          | App\Http\Controllers\API\UserAPIController@sendResetLinkEmail                                  | api                                                  |
|        | GET|HEAD  | api/settings                                            |                                          | App\Http\Controllers\API\UserAPIController@settings                                            | api                                                  |

Решение:

Это сработало для меня после многих изменений, я изменил свой URL-адрес запроса GET с " www.domain.com/api/resturants "на" www.domain.com/public/api/resturants "

1 Ответ

0 голосов
/ 05 мая 2020

Ну, я не знаю о вашем коде флаттера, потому что я использую разные методы для получения данных из api, но о маршрутах, которые я предлагаю вам сделать, как я

в Интернете. php файл маршрута

//Api routes
Route::get('/company/api/fetch', 'ApiController@fetch_companies');

мой контроллер api

public function fetch_companies()
{
    $companies = Companies::all();

    return response()->json($companies);
}

таким образом вы получите данные, переданные в route / company / api / fetch (вы можете изменить это по своему усмотрению) и при получении запроса войдите на эту страницу, он вернет json

, а для обработки запроса на стороне flutter я предлагаю вам сделать свои функции и классы такими, как в документация

Примечание: предложенное мной решение флаттера может не работать с вашим случаем, поскольку вы используете Stream , который отличается от этого типа запросов, потому что этот тип работает только единицы, в то время как Stream выполняется много раз и получает данные каждый раз, когда получает новые данные с сервера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...