# Slim4 - Route callbacks must return Response

**URL:** <https://discourse.slimframework.com/t/slim4-route-callbacks-must-return-response/3304>\
**Category:** Questions\
**Created:** [July 30, 2019, 7:41am UTC](https://discourse.slimframework.com/t/slim4-route-callbacks-must-return-response/3304 "2019-07-30T07:41:56Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![architshin](https://avatars.discourse-cdn.com/v4/letter/a/779978/32.png) [@architshin](https://discourse.slimframework.com/u/architshin)\
**Post date:** [July 30, 2019, 7:41am UTC](https://discourse.slimframework.com/t/slim4-route-callbacks-must-return-response/3304/1 "2019-07-30T07:41:56Z")

</div>

Hey.  
I’ve got TypeError from route callbacks on Slim4.  
On Slim3, return value of route callbacks is either Psr\Http\Message\ResponseInterface or void(so no need to return).  
On Slim4, if I don’t write return value of route callbacks as below,

```
$app->get("/hello", function(ServerRequestInterface $request, ResponseInterface $response, $args) {
    print("Hello world!");
});

```

and TypeError has occurred.

```
Hello world!
**Fatal error** : Uncaught TypeError: Return value of Slim\Handlers\Strategies\RequestResponse::__invoke() must implement interface Psr\Http\Message\ResponseInterface, null returned in /Users/Shinzo/htdocs/socymslim.localhost/firstslim/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php:42 Stack trace: 
#0 /Users/Shinzo/htdocs/socymslim.localhost/firstslim/vendor/slim/slim/Slim/Routing/Route.php(370): Slim\Handlers\Strategies\RequestResponse->__invoke(Object(Closure), Object(Slim\Psr7\Request), Object(Slim\Psr7\Response), Array) 
#1 /Users/Shinzo/htdocs/socymslim.localhost/firstslim/vendor/slim/slim/Slim/MiddlewareDispatcher.php(64): Slim\Routing\Route->handle(Object(Slim\Psr7\Request)) 
#2 /Users/Shinzo/htdocs/socymslim.localhost/firstslim/vendor/slim/slim/Slim/MiddlewareDispatcher.php(64): Slim\MiddlewareDispatcher->handle(Object(Slim\Psr7\Request)) 
#3 /Users/Shinzo/htdocs/socymslim.localhost/firstslim/vendor/slim/slim/Slim/Routing/Route.php(338): Slim\MiddlewareDispatcher->handle(Object(Slim\Psr7\Request)) 
#4 /Users/ in **/Users/Shinzo/htdocs/socymslim.localhost/firstslim/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php** on line **42**

```

If I write `return $response;`, no error.  
So, Slim4’s route callbacks must return Response always. Is this right?

---

<div class="post-metadata">

**Author:** ![l0gicgate](https://avatars.discourse-cdn.com/v4/letter/l/41988e/32.png) [@l0gicgate](https://discourse.slimframework.com/u/l0gicgate)\
**Post date:** [July 30, 2019, 4:06pm UTC](https://discourse.slimframework.com/t/slim4-route-callbacks-must-return-response/3304/2 "2019-07-30T16:06:39Z")

</div>

This is not new from Slim 4. Route callbacks must return a `Response` object.

---

<div class="post-metadata">

**Author:** ![architshin](https://avatars.discourse-cdn.com/v4/letter/a/779978/32.png) [@architshin](https://discourse.slimframework.com/u/architshin)\
**Post date:** [July 31, 2019, 9:29am UTC](https://discourse.slimframework.com/t/slim4-route-callbacks-must-return-response/3304/3 "2019-07-31T09:29:51Z")

</div>

@l0gicgate Thank you for your reply! I understand.
