code: public function parsePsrRequest(ServerRequestInterface $request)
      {
          if ($request->getMethod() === 'GET') {
              $bodyParams = [];
          } else {
              $contentType = $request->getHeader('content-type');
  
              if (! isset($contentType[0])) {
                  throw new RequestError('Missing "Content-Type" header');
              }
  
              if (stripos($contentType[0], 'application/graphql') !== false) {
                  $bodyParams = ['query' => $request->getBody()->getContents()];
              } elseif (stripos($contentType[0], 'application/json') !== false) {
                  $bodyParams = $request->getParsedBody();
  
                  if ($bodyParams === null) {
                      throw new InvariantViolation(
                          'PSR-7 request is expected to provide parsed body for "application/json" requests but got null'
                      );
                  }
  
                  if (! is_array($bodyParams)) {
                      throw new RequestError(
                          'GraphQL Server expects JSON object or array, but got ' .
                          Utils::printSafeJson($bodyParams)
                      );
                  }
              } else {
                  $bodyParams = $request->getParsedBody();
  
                  if (! is_array($bodyParams)) {
                      throw new RequestError('Unexpected content type: ' . Utils::printSafeJson($contentType[0]));
                  }
              }
          }
  
          return $this->parseRequestParams(
              $request->getMethod(),
              $bodyParams,
              $request->getQueryParams()
          );
      }
docs: Converts PSR-7 request to OperationParams[]
  
  @return OperationParams[]|OperationParams
  
  @throws RequestError
  
  @api