WP Gutenberg – How to parse simple images?

When you return $post->post_content you’re returning the raw content from the database. Things like shortcodes, dynamic blocks and responsive image markup will not exist in the content. To prepare content for output you need to run it through the the_content filter:

'content' => apply_filters( 'the_content', $post->post_content ),

That being said, there is already an endpoint for retrieving a single post, so you’d be better off just using that.