Hi there,

New to Slim in general, but I’m getting the hang of it. Anyway, I’m sending an ajax post to one of my routes, but the body is turning up null . I verified the output of the data being sent to the route via ajax and it’s working just fine.

Here’s the ajax request:

$.ajax({
	type: 'POST',
	url: 'http://localhost:8888/aslists/public/sign-in',
	contentType: 'application/octet-stream; charset=utf-8',
	data: authResult["code"], // sends a string to the server
	success: function(result) {
		console.log(result);
	processData: false

For my route file I have:

 $app->post('/sign-in', '\Foo\Controllers\LoginController:login');

For the method inside of LoginController I have:

public function login($request, $response) {
	var_dump($request->getParsedBody());

I’m not really sure why this is failing. I played around with other content types like text/html and text/xml but I still got null

In order to decode the HTTP message into an array that is retrievable using getParsedBody , Slim uses the Content-Type header to determine how to do the decode. A Content-Type of `application/octet-stream’ is unknown to Slim and so it cannot decode the data.

The easiest solution is to send a Content-Type of application/json. Alternatively, you could register your own media type parser with the request as documented here: http://www.slimframework.com/docs/objects/request.html#media-type-parsers.

 $request->getBody()->getContents()

since I was just POSTing an access code from OAuth 2.0. For anyone struggling with this, you can split up your route file into a controllers and then get your access/refresh tokens like this:

 $client = new \Google_Client(/* optionally add config file here*/);
 $client->authenticate($request->getBody()->getContents());

Nevertheless, thank you @akrabat for the information!