SF3.4:如何为我的DTO系列补水?

时间:2019-12-19 19:36:02

标签: php api serialization dto symfony-3.4

我将SF 3.4应用程序与Rest API连接起来。然后,我创建了一个DTO类和相应的类。

这是我的服务配置:

    AppBundle\Api\AminoApi:
        arguments:
            - '@csa_guzzle.client.bioapi'
            - '@jms_serializer'

这是我的DTO:

    namespace AppBundle\Api\DTO;

    class AminoDTO
    {
        /**
         * @var     string      Id of the amino acid (auto-increment)
         */
        private $id;

        /**
         * @var     string      Name of the amino
         */
        private $name;

        /**
         * @var     string      Name in 1 letter (A, L, S ...)
         */
        private $name1Letter;

        /**
         * @var string          Name in 3 letters (Ser, Leu ...)
         */
        private $name3Letters;

        /**
         * @var float
         */
        private $weight1;

        /**
         * @var float
         */
        private $weight2;

        /**
         * @var float
         */
        private $residueMolWeight; 

    }

和班级:

    namespace AppBundle\Api;

    use AppBundle\Api\DTO\AminoDTO;
    use GuzzleHttp\Client;
    use JMS\Serializer\Serializer;

    class AminoApi
    {
        /**
         * @var Client
         */
        private $bioapiClient;

        /**
         * @var Serializer
         */
        private $serializer;

        /**
         * @var string|null
         */
        private $apiKey;

        /**
         * Bioapi constructor.
         * @param Client        $bioapiClient
         * @param Serializer    $serializer
         * @param string        $apiKey
         */
        public function __construct(Client $bioapiClient, Serializer $serializer, $apiKey = null)
        {
            $this->bioapiClient = $bioapiClient;
            $this->serializer   = $serializer;
            $this->apiKey       = $apiKey;
        }

        /**
         * Retrives Aminos informations
         * @return object
         */
        public function getAminos()
        {
            $uri = '/aminos';
            $response = $this->bioapiClient->get($uri);
            return $this->serializer->deserialize($response->getBody()->getContents(), AminoDTO::class, 'json');
        }
    }

当我调用$aminoApi->getAminos()时,我得到一个空类,我想要一个对象数组!

当我询问json响应时它可以工作,因此与API的连接正常!

我在做什么错了?

谢谢。

0 个答案:

没有答案