Fehlende Details bei API Fehler

Thema wurde von sirtet, 25. Oktober 2023 erstellt.

  1. sirtet
    sirtet Erfahrener Benutzer
    Registriert seit:
    4. Juli 2012
    Beiträge:
    1.131
    Danke erhalten:
    89
    Danke vergeben:
    90
    Ich habe immer wieder Probleme mit VARIO, wenn Daten per API an Gambio gehen.
    Allerdings sieht man in VARIO auch im Debug-Modus nicht genug:

    Code:
    24.10.2023 23:07:41 [TGambioAPI] POST  https://... .../api.php/v3/products/158/variants
    
    [HEADER]: Authorization=Basic dG9yb0Br... ...Mg==
    [HEADER]: Content-Type=application/json
    
    CONTENT:
    [
        {
            "sortOrder": 460300,
            "modelNumber": "27305-XL-N200R",
            "GTIN": "",
            "ASIN": "",
            "EAN": "",
            "stockType": "only-positive",
            "stock": 100,
            "weightType": "replacing",
            "weight": 0,
            "priceType": "replacing",
            "price": 0,
            "vpeScalarValue": 0,
            "vpeUnitId": null,
            "deliveryTimeId": 1,
            "imageListId": null
        }
    ]
    
    24.10.2023 23:07:41 [TGambioAPI] STATUS:
        500 Internal Server Error
    
    HEADER:
        Cache-Control: public, max-age=0
        Connection: Keep-Alive
        Date: Tue, 24 Oct 2023 21:07:41 GMT
        Keep-Alive: timeout=5, max=100
        Content-Length: 54
        Content-Type: application/json; charset=UTF-8
        Expires: Tue, 24 Oct 2023 21:07:41 GMT
        x-rate-limit-limit: 5000
        x-rate-limit-remaining: 4877
        x-rate-limit-reset: 1698182536
        x-shop-version: v4.8.0.2
        x-api-version: 3.0.0
        x-content-type-options: nosniff
    
    CONTENT:
    {
        "error": "An unexpected error occurred.",
        "details": ""
    }
    
    Das "details"- Attribut in der Antwort ist immer leer.
    Sollte da nicht jeweils etwas drin stehen? In /logfiles/api.log.txt (resp. .json) findet man ja deutlich mehr:


    Code:
    4052 ######################################################################
    4053
    4054 [2023-10-24 23:07:41 | ERROR] An unexpected error occurred while handling an incoming request.
    4055 context:
    4056   error:
    4057     class: TypeError
    4058     message: Argument 1 passed to Gambio\Api\Modules\ProductVariant\App\ProductVariantApiRequestValidator::validateGenerationBody() must be of the type arr     ay, null given, called in /.../GambioApi/Modules/ProductVariant/App/ProductVariantApiRequestValidator.php on line 49
    4059     code: 0
    4060     file: /.../GambioApi/Modules/ProductVariant/App/ProductVariantApiRequestValidator.php:107
    4061     trace:
    4062       0: /.../GambioApi/Modules/ProductVariant/App/ProductVariantApiRequestValidator.php:49
    4063       1: /.../GambioApi/Modules/ProductVariant/App/Actions/CreateProductVariantsAction.php:98
    4064       2: /.../vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php:38
    4065       3: /.../vendor/slim/slim/Slim/Routing/Route.php:358
    4066       4: /.../vendor/slim/slim/Slim/MiddlewareDispatcher.php:65
    4067       5: /.../vendor/slim/slim/Slim/MiddlewareDispatcher.php:65
    4068       6: /.../vendor/slim/slim/Slim/Routing/Route.php:315
    4069       7: /.../vendor/slim/slim/Slim/Routing/RouteRunner.php:68
    4070       8: /.../vendor/slim/slim/Slim/Middleware/RoutingMiddleware.php:45
    4071       9: /.../vendor/slim/slim/Slim/MiddlewareDispatcher.php:121
    4072       10: /.../vendor/slim/slim/Slim/Middleware/ErrorMiddleware.php:76
    4073       11: /.../vendor/slim/slim/Slim/MiddlewareDispatcher.php:121
    4074       12: /.../GambioApi/Application/Middleware/RateLimitMiddleware.php:85
    4075       13: /.../vendor/slim/slim/Slim/MiddlewareDispatcher.php:168
    4076       14: /.../GambioApi/Application/Middleware/AuthenticationMiddleware.php:78
    4077       15: /.../vendor/slim/slim/Slim/MiddlewareDispatcher.php:168
    4078       16: /.../GambioApi/Application/Middleware/VersionsMiddleware.php:38
    4079       17: /.../vendor/slim/slim/Slim/MiddlewareDispatcher.php:168
    4080       18: /.../vendor/slim/slim/Slim/MiddlewareDispatcher.php:65
    4081       19: /.../vendor/slim/slim/Slim/App.php:199
    4082       20: /.../vendor/slim/slim/Slim/App.php:183
    4083       21: /.../GambioCore/Application/Kernel/HttpKernel.php:67
    4084       22: /.../GambioCore/Application/Application.php:70
    4085       23: /.../api_v3.php:24
    4086       24: /.../api.php:13
    4087 extra:
    4088   request:
    4089     method: POST
    4090     uri: /.../api.php/v3/products/158/variants
    4091     software: LiteSpeed
    4092     address: 149.... ...9
    4093     userAgent: Embarcadero RESTClient/1.0
    4094     time: 101
    4095     remoteAddress: cdb9e934e038ca93c6c46f4076e1fbbb
    4096
    
    Warum wird in den API-Antworten ein leeres Attribut ausgegeben?
    Ist das Absicht oder Fehler? Die Ausgabe des leeren Attributs "details" deutet auf letzteres...


    UND:
    Gemäss der API Dokumentation müsste das doch einen 400 Error geben, nicht 500, oder?
     
  2. Dominik Dehning
    Dominik Dehning Aktives Mitglied
    Registriert seit:
    21. März 2023
    Beiträge:
    41
    Danke erhalten:
    30
    Danke vergeben:
    39
    In den Fehlermeldungen wird "details" nur ausgegeben, wenn du dich im Test/Developer-"Modus" befindest.

    Wenn du im Shop-Root eine Datei mit dem Namen ".dev-environment" anlegst, dann wird "details" entsprechend mit weiteren Infos befüllt (so wie im Log).

    Ich vermute außerdem, dass der 500er-Fehler kommt, weil hier von PHP selbst ein Fehler festgestellt wird (falscher Typ für eine Variable) und nicht von den Validierungsfunktionen der API.