scramble icon indicating copy to clipboard operation
scramble copied to clipboard

Response Body Returning String when using ApiResponser Trait

Open arislanhaikal opened this issue 5 months ago • 11 comments

Hello All I use scamble version 0.11.13 with Laravel 11. When I build an API, I always create an ApiResponser Trait to keep my API response consistent.

Such as:

{
    success: boolean,
    data: array,
    message: string
}

I create ApiResponser.php trait

<?php

namespace App\Traits;

use Illuminate\Http\Response;
use Illuminate\Http\JsonResponse;

trait ApiResponser
{
    /**
     * Building success response
     *
     * @param  string|array  $data
     * @param  ?string  $message
     * @param  int  $code
     * @return JsonResponse
     */
    public function successResponse($data, $message = null, $code = Response::HTTP_OK)
    {
        return response()->json([
            'success' => true,
            'data' => $data,
            'message' => $message,
        ], $code);
    }
}

and then I used in Controller.php

<?php

namespace App\Http\Controllers;

use App\Traits\ApiResponser;

abstract class Controller
{
    use ApiResponser;
}

In another controller, example AuthController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\JsonResponse;
use App\Http\Requests\Auth\LoginRequest;
use Illuminate\Validation\ValidationException;

class AuthController extends Controller
{
    /**
     * Login
     *
     * @unauthenticated
     *
     * @throws ValidationException
     */
    public function login(LoginRequest $request): JsonResponse
    {
        // LOGIC

        return $this->successResponse([
            'token' => 'blablabla',
            'token_type' => 'Bearer',
        ], __('Login successful'));
    }
}

The expected Response Body in scramble is

{
  "success": boolean,
  "data": {
    "token": string,
    "token_type": string
  },
  "message": string
}

But response body in scramble is string 000210-wAhUYmRP@2x

Is there something wrong with me? Or how should I return API responses with a consistent format? Thank you

arislanhaikal avatar Sep 12 '24 08:09 arislanhaikal