Community Conundrum 25:Feature Visualization is now live! Read More

Modify REST API response structure

Level 1
Modify REST API response structure

Hi Guys,

When we are getting the response payload from the DSS endpoint there are 3 keys mentioned as below -

{

"response":"",

"timing:{},

"apiContext": {}

}

My end point is returning as - 

{"status":"", "result":"", "error":""}

 

is there any way to get pure response from the endopints without adding above 3 keys to the response payload?

0 Kudos
2 Replies
Dataiker
Dataiker

Hi @Ashwin 

If you need to modify the response for a client that is dependent on it, you could create a Python function endpoint in addition. The client would query this endpoint instead, and it, in turn, would internally query and reformat the response from the other endpoint (the one you currently use).

You can see a snippet below of what the Python function endpoint might look like.

from dataiku.apinode import utils

def do_something(features):
    client = utils.get_self_client()
    some_result = client.predict_record("some_other_model_endpoint", features = features)
    reformatted_result = some_result
    return reformatted_result
0 Kudos
Level 1
Author

Hey Liev,

I tried the way you explained but I am facing the below error.

 

java.lang.ClassCastException: com.dataiku.lambda.endpoints.pyfunction.PyFunctionEndpointHandler cannot be cast to com.dataiku.lambda.endpoints.predictcommon.PredictionEndpointHandlerBase

import traceback

from dataiku.apinode import utils


def api_py_function(f):
    try:
        client = utils.get_self_client()
        result = client.predict_record("my endpoint name", features=f)
        reformatted_result = result
        return reformatted_result
    except Exception as e:
        return traceback.format.exc()

0 Kudos