9 – Implement an API to use HTTP extensions like CalDAV

I solved this.
I added method to the route and @Method({‘PROPFIND’}) to the source (I am not sure if this is needed for Symfony).

class DavController extends ControllerBase {

/**     
 * @Method({"PROPFIND"})       
 */
 public function dav() {
     //Get the data, fill into xml twig

        $response = new Response();
        $xml = Drupal::service('renderer')->renderRoot($build);
        $response->setContent($xml);
        $response->headers->set('Content-Type', 'application/xml');

        return $response
 }

module_name.routing.yml (this seems to be mandatory):

    entity.dav_controller.dav:
        path: 'path/to/dav/enpoint'
        methods: (PROPFIND)
        defaults:
            _controller: 'DrupalpathtoDavController::dav'
            _title: 'my_title'
        requirements: 
            _permission: 'access content'

This works in 8 and 9.

Note that this does not involve the Drupal REST API. This is supposed to be an own implementation and won’t solve the issue for anyone who wants to use REST API to answer to such methods. I am not experienced enough with Drupal to explain if and how one could configure REST API to accept HTTP methods not listed in the REST API documentation. Maybe one could extend own controllers from the REST API, but I didn’t inquire into how to do that.