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:
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:
@classmethoddef 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.
Example handle_delete() method
Section titled “Example handle_delete() method”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.
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}