Skip to content

DELETE requests

The class method handle_delete() handles all DELETE requests for the service. Add this method to accept DELETE requests and add logic to such a request:

custom/MyService.py
class MyService(BaseService):
...
@classmethod
def handle_delete(cls, path: str, **kwargs) -> dict[str, Any]:

The method expects the following parameters:

  • path: Sub path of the request like my-sub-path (/service/MyService/my-sub-path)
  • **kwargs: Dictionary of keyword arguments (URL parameters) - you should declare and define the URL parameters as method parameters

Declare URL parameters in handle_delete() and define None as their default value, so that you know when this parameter is missing:

custom/MyService.py
@classmethod
def handle_delete(cls, path: str, my_custom_parameter: str | None = None, **kwargs) -> dict[str, Any]:

handle_delete() has to return a dictionary with only strings as keys.

The following service deletes a person from the database using the person’s object id.

The endpoint would be available via DELETE /service/MyService/9a8sd2sd829555sdjlguracv.

custom/MyService.py
from typing import Any
from perseus.datamanager import DatabaseManager, Person
from .BaseService import BaseService
class MyService(BaseService):
...
@classmethod
def handle_delete(cls, path: str, **kwargs) -> dict[str, Any]:
db_manager = DatabaseManager()
person_to_delete = db_manager.get_item(Person, oid=path)
if person_to_delete is not None:
delete_person = db_manager.delete_item(person_to_delete)
if delete_person is True:
return {"result": True}
return {"result": False}