Eigenen API Endoint ohne Resource

Frage, kann ich bei Shopware einen eigenen API Endpoint einrichten, der nicht auf eine bestimmte Resource geht? Ich weiß REST, CRUD und so, ich brauch aber eine Möglichkeit (Wartungs)Aktionen von extern auszuführen, ohne mich um Authentifizierung zu sorgen, alternativ nen Backend-Controller, nur wie mache ich das mit der Authentifizierung dann?

Ich möchte folgendes Ergebnis bewerkstelligen: POST auf /api/MyCompany/doSomeTask - (body mit werten wird gesendet), GET auf /api/MyCompany/doAnotherTask (ohne body, eventuell query params)

 

OK, GET klappt zumindest schonmal ein wenig, wenn in der indexAction auf Request->has(’…’) schaue, aber post wär schon super irgendwie :confused:

Generell kannst du dich in die API einklinken und eigene Endpoints erstellen mit einem eigenen Plugin.

Die Datei würde dann so in etwa aussehen:

 'onGetThemaApiController',
            'Enlight_Controller_Front_StartThema' => 'onEnlightControllerFrontStartThema'
        ];
    }

    /**
     * @return string
     */
    public function onGetThemaApiController()
    {
        return $this->getPath() . '/Controllers/Api/Thema.php';
    }

    /**
     *
     */
    public function onEnlightControllerFrontStartThema()
    {
        $this->container->get('loader')->registerNamespace('Shopware\Components', $this->getPath() . '/Components/');
    }
}

In einem Controller würdest du dann die Funktionen definieren, welche bei den jeweiligen Aufrufen stattfinden sollen.

Am Besten mal hier schauen : https://developers.shopware.com/developers-guide/rest-api/plugin-api-extension/

Du brauchst die beiden Events garnicht. Bloß in PluginName/Controllers/Api/ControllerName.php den Controller anlegen mit richtigen Klassen Namen. Dann sollte es schon gehen. Du kannst dir sonst Udemy anschauen, dort sollte erklärt werden wie man API Controller anlegt

@Shyim‍  Das Anlegen des Controllers ist nicht das Problem. Ich bekomme es nur nicht hin, dass der API Controller mit Post/Put/Delete funktioniert wenn ich ihn von Shopware_Controllers_Api_Rest ableite, da das field “resource” fehlt (gewollt). Get funktioniert bis jetzt. Oder soll ich Ihn garnicht ableiten? Das hab ich noch nicht probiert