简体   繁体   中英

request body logic with JSON raw data

I am trying to send raw JSON data via Postman as required parameter.

My function works fine except that part. When I paste json data into postman it throws:

A non-empty request body is required.

I think there is a little modification needed but I can't find solution.

My code:

 public function callApi(BaseRequest $request)
{

    $token = $this->getTokenForRequest($request);
    $method = $request->getMethod();

    $client = new Client(['base_uri' => 'https://api-tst.testing.app/test/']);

    $headers = [
        'Authorization' => 'Bearer ' . $token,
        'Ocp-Apim-Subscription-Key' => '1111112222',
        'Content-Type'  => 'application/json',
    ];

    $request->getRequestParams();

    $res = $client->request($method, $request->getUrl(), [
        'headers' => $headers
    ]);

    $res->getStatusCode();
    $response = $res->getBody()->getContents();

    return $response;
}

and form my BaseRequest:

 public function getUrl()
{
    return null;
}

public function getMethod()
{
    return null;
}

/**
 * @return array
 */
public function getRequestParams()
{
   $data = [];

   return $data;
}

And I am calling it in controller like:

 public function testAll(Request $request)
    {
        $data = (string)$request->getContent();
        $data = json_decode($data, true);
        $response = $this->container->get('app')->myFunction($data);

        dump($response);die;
    }

Found it!

 $res = $client->request($method, $request->getUrl(), [
        'headers' => $headers,
        'json' => $request->getRequestParams()
    ]);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM