I’m just getting started with the WebDev module and have a project where an external system will create an HTTP request by supplying a tag path and tag value and Ignition will update the tag accordingly. The tag path and value will both vary. Here is my code so far.
def doPost(request, session):
import time
tagPath = request['params']['tagPath']
tagValue = request['params']['tagValue']
system.tag.write(tagPath,tagValue)
time.sleep(1)
tagVal = system.tag.read(tagPath).value
return {'json': system.util.jsonEncode(tagVal)}
It seems to work fine with the doPost and doPut methods. But which one should I use?
I have searched the web and this seems to be a common topic. Most posts on this forum say doGet and doPost handles almost all cases so I’m leaning towards doPost. Stack Overflow mentions that PUT is idempotent…which I also had to google and still don’t really understand but it has to do with being able to send (or re-send rather) the same request and it’s processed exactly the same as it would be the first time that it was sent.
There’s also mention of POST being good for a “list of questions” and PUT for a “single question”. Not sure how that relates to my need with a tag path and value.
But I’m so new to this that I still don’t really know the best practice. Any thoughts?