from json import loads from bottle import request def read_keys_from_request(keys: None|dict = None): result = {} try: body = request.body.read() data = loads(body.decode('utf-8')) except: return result if keys: missing_keys = [key for key in keys if key not in data] if missing_keys: raise ValueError(f"Missing required keys: {', '.join(missing_keys)}") data = {key: data[key] for key in keys} return data