That depends on the route. If you have a route that returns a list of posts, then you should assert the response code and the content of the response. If you have a route to create a post, then you should assert the response code, changes in the database, and the content of the response.
Depth depends on how many details you want to cover. Usually, I just assert that the structure is expected. So if I have a list of posts returned, then I would assert the content of the first post, and that structure follows the expected structure. I don't care about what controller is called. Not sure how I would test that. Do you have multiple controllers doing the same thing? If that is true, then why? If that is false then every controller should return a unique response.
I first create an integration/functional test. That covers more ground. Then while writing the implementation in the controller if I create any new class or any new method, I create unit tests for those if applicable. That is why TDD is a very good approach.