Вызов с методом Retrofit удалить Yii2, который переопределен - PullRequest
0 голосов
/ 13 февраля 2019

Я переопределил метод delete в своем контроллере Yii2, но я не могу вызвать его из приложения Android с библиотекой Retrofit.

public function actionDelete($id)
    {
        $model=$this->findModel($id);
        if($model->delete())
        {
            $this->setHeader(200);
            echo json_encode(array('status'=>1,'data'=>array_filter($model->attributes)),JSON_PRETTY_PRINT);
        }
        else
        {
            $this->setHeader(400);
            echo json_encode(array('status'=>0,'error_code'=>400,'errors'=>$model->errors),JSON_PRETTY_PRINT);
        }
    }

Я пробовал 2 версии вызова: первый

@DELETE("posts/delete/{id}")

second

 @DELETE("posts/{id}")

Call<Void> deletePosts(@Path("id") int id);

Но я получаю ошибку 404. Так как мне правильно вызвать этот метод?

Когда я пытаюсь вызвать не переопределенный метод, я получаю ошибку 500. Может быть, кто-то знаетКак я могу вызвать метод удаления из Android в Yii2 отдыха?Заранее спасибо.

1 Ответ

0 голосов
/ 14 февраля 2019

Чтобы передать параметр, как в public function actionDelete($id), вам нужно вызвать /posts/delete?id=<id>, а не просто /posts/delete/<id>.Однако, если ошибиться, это приведет к ошибке HTTP 400 Bad Request, а не к ошибке 404. Not Found.

Возможная причина ошибки 404: я предполагаю, что $model=$this->findModel($id); - это сгенерированный код.Если это так, то, скорее всего, выдается исключение NotFoundHttpException, если модель с указанным идентификатором не может быть найдена.

Еще одна вещь, которую вы можете проверить, это то, настроен ли VerbFilter в behaviors() метод вашего контроллера, чтобы разрешить только POST-запросы для действия удаления.Возможно, вы отправляете запрос GET.

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