Laravel Форматирование объекта ответа API - PullRequest
0 голосов
/ 20 февраля 2020

Я создал базовый c Laravel REST API, который будет обслуживать некоторые JavaScript приложения, использующие ax ios для выполнения запросов.

Мое приложение использует базовый контроллер для обеспечения все ответы отправляются в одном и том же формате:

class BaseController extends Controller
{
    /**
     * success response method.
     *
     * @param $result
     * @param $message
     *
     * @return JsonResponse
     */
    public function sendResponse($result, $message)
    {
        $response = [
            'success' => true,
            'data' => $result,
            'message' => $message,
        ];

        return response()->json($response, 200);
    }

    /**
     * return error response.
     *
     * @param $error
     * @param  array  $errorMessages
     * @param  int  $code
     *
     * @return JsonResponse
     */
    public function sendError($error, $errorMessages = [], $code = 200)
    {
        $response = [
            'success' => false,
            'message' => $error,
        ];

        if (!empty($errorMessages)) {
            $response['data'] = $errorMessages;
        }

        return response()->json($response, $code);
    }
}

Когда я получаю ответ из URL-адреса API и записываю его в консоль, я получаю следующий вывод:

enter image description here

В настоящее время мой объект ответа содержит свой собственный объект данных, который затем содержит другой объект данных. В результате для доступа к данным мне нужно использовать response.data.data.

Мне интересно, действительно ли это правильный способ сделать это. Поскольку соглашение об именах response.data.data, похоже, не очень чистый способ сделать это. Я видел пару руководств в Интернете, где это было сделано таким образом, но мне интересно, есть ли какие-то обычно соблюдаемые соглашения, которые я пропускаю. Возможно, это правильно, но я просто хотел получить представление от более опытных программистов.

1 Ответ

1 голос
/ 20 февраля 2020

На мой взгляд, как вы подходите, это нормально:

  • response - это объект полного ответа через топор ios
  • response.data - это тело полного ответа было возвращено
  • response.data.data - это узел data тела ответа, который был возвращен

Некоторые предложения:

  • вместо использования success в вашем ответе, что может подразумеваться из возвращенного кода состояния: все в пределах 200-299 успешно, все 300-399 - это перенаправление, любое 400-499 - ошибка клиента, а любое 500+ - ошибка сервера ( см. здесь )
  • вместо использования data в случае ошибки, по моему мнению, узел должен быть зарезервирован для успешных данных, и должен использоваться узел, такой как errors вместо
  • ваш метод sendError должен по умолчанию использовать код состояния 500 вместо 200, так как 200 является успешным кодом состояния
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...