Get current workflow status

What’s the best way to get the current status of a workflow, along with the activities?
My use case is that I have to keep displaying the status of a workflow from the time it started till it finishes.
Is it good to directly query the history API -
Should I go with the query handler approach -
What is the recommended way for this use case?

I would recommend the query handler approach. You can customise the query results exactly for your use case.