Требуют сделать небольшой GRUD - Создание элементов - Обновление элементов - Удаление элементов - Получение информации о элементе Я почитал про REST и ничего толком не понял, это тоже самое, что и GRUD для своего сайта? Советуют вместо метода POST использовать PUT.
Да, примерно. Только вы не указываете действия в адресах, а используете для этого методы. Хотя для браузеров приходится изгаляться, потому что там только GET и POST. Определенное действие может обозначать специфическая комбинация параметров.
Всё сделал по этой статье https://arjunphp.com/create-rest-laravel-framework/ Запустил сервер php artisan serve И как теперь получить данные? Пишу /api/task выдаёт Код (Text): Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException No message И почему роуты надо прописывать в api.php, а не в web.php?
Потому что в web много лишних middleware. Зайди в Http/Kernel и посмотри Значит нету такого роута с таким методом вот и ошибка
Да обычно. Как и веб заходишь в routes/api пишешь Route::get('/login', 'Api\AuthController@login'); и получаешь через /api/login RouteServiceProvider еще глянь
Я разобрался, надо это прописать http://127.0.0.1:8000/api/task/2 А как использовать метод put и delete? PHP: Route::get('tasks','TaskController@index'); // get specific task Route::get('task/{id}','TaskController@show'); // delete a task Route::delete('task/{id}','TaskController@destroy'); // update existing task Route::put('task','TaskController@store'); // create new task Route::post('task','TaskController@store'); PHP: public function destroy($id) { //Get the task $task = Task::find($id); if (!$task) { return $this->response->errorNotFound('Task Not Found'); } if($task->delete()) { return $this->response->withItem($task, new TaskTransformer()); } else { return $this->response->errorInternalError('Could not delete a task'); } } public function store(Request $request) { if ($request->isMethod('put')) { //Get the task $task = Task::find($request->task_id); if (!$task) { return $this->response->errorNotFound('Task Not Found'); } } else { $task = new Task; } $task->id = $request->input('task_id'); $task->name = $request->input('name'); $task->description = $request->input('description'); $task->user_id = 1; //$request->user()->id; if($task->save()) { return $this->response->withItem($task, new TaskTransformer()); } else { return $this->response->errorInternalError('Could not updated/created a task'); } }
Ну что б понятнее было приблизительно вот так input name="_method" type="hidden" value="DELETE" и все это постом
Нужные поля Вводные данные: Сущность: Item Поля сущности: id - int автоинкремент name - char(255) key - char(25) not null created_at - datetime - дата создания элемента updated_at - datetime - дата обновления элемента Для чего поле key, что в нём должно быть?
@Dimon2x, такое впечатление, что ты читать тексты не умеешь. Да и примеры. https://github.com/Div-Man/REST-API-Laravel/blob/master/app/Http/Controllers/ItemController.php#L26 - вот это что за бред сивой кобылы? И почему API-контроллер какую-то вьюху дёргает? API - это не для того, чтобы html смотреть, это для того, чтобы из какого-нибудь Angular-а или мобильного приложения дёргать, или с другого сайта (если это публичный сервис) и получать json/xml или что-то а-ля. Явные вызовы json_encode - это лишнее, в статье, которую ты привёл, их нету. И в доке Laravel описано, что он сам это делает, если надо, и тут описано, что для того, чтобы это делать гибче, они установили какой-то пакет...
Лучше с этого начни. https://laravel.com/docs/5.6/eloquent-resources https://laravel.com/docs/5.6/passport
Не у одного тебя такое впечатление --- Добавлено --- @Dimon2x у тебя реальная проблема, ты игнорируешь документацию. Это уже много раз проявилось здесь на форуме и обязательно повредит твоей работе.
Да ему не документация нужна. Ему видео нужно. Что б просто увидеть как что где и для чего делается. Саму суть понять. --- Добавлено --- Притом полное комплексное с результатом в конце