I have configured a custom REST endpoint with a Python script.
When I call my endpoint with fields in the query string I am able to read them in my Python script.
However, if I try to use the POST method with data in the request body, I can't access this data in my Python script.
What is the correct way to POST data to a custom endpoint and handle it in a python script ?
This is my code so far :
Below : my_app/local/web.conf (Holds a stanza with the name of my endpoint)
Below : myapp/appserver/controllers/myscript.py (Holds my script, with name matching the endpoint)
import splunk.appserver.mrsparkle.controllers as controllers
from splunk.appserver.mrsparkle.lib.decorators import expose_page
def my_function(self, **kwargs) :
arg1 = kwargs.get('arg1', 'default_val_arg1')
arg2 = kwargs.get('arg2', 'default_val_arg2')
return arg1 + arg2
Now using a REST client.
GET on the following url returns "onetwo", which is good.
I fixed this by specifying the HTTP POST method in the decorators.
If you don't, the method defaults to GET and doesn't read parameters from the body.
Also don't forget to specify a locale like en-US in the URL or else you will be slapped by a 405 Method Not Allowed error.