api platform - Unable to generate an IRI for the item

13,374

You're missing a getter for your id

public function getId()
{
    return $this->id;
}
Share:
13,374
JuliSmz
Author by

JuliSmz

Updated on June 05, 2022

Comments

  • JuliSmz
    JuliSmz almost 2 years

    I'm starting with API Platform and I'm using the example entity "Foo":

    namespace AppBundle\Entity;
    
    use ApiPlatform\Core\Annotation\ApiResource;
    use Doctrine\ORM\Mapping as ORM;
    
    
    /**
     * Foo
     *
     * @ORM\Table(name="foo")
     * @ApiResource
     * @ORM\Entity
     */
    class Foo
    {
        /**
         * @var string
         *
         * @ORM\Column(name="bar", type="string", length=255, nullable=false)
         */
        private $bar;
    
        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="IDENTITY")
         */
        private $id;
    
    
    }
    

    I succesfully see the new Entity in dashboard (See image):

    API Platform Dhasboard

    And I had the following error when I try to get all Foo collection:

    curl -X GET "http://127.0.0.1:8000/foos" -H "accept: application/json"
    
        {
      "type": "https://tools.ietf.org/html/rfc2616#section-10",
      "title": "An error occurred",
      "detail": "Unable to generate an IRI for the item of type \"AppBundle\\Entity\\Foo\"",
      "trace": [
        {
          "namespace": "",
          "short_class": "",
          "class": "",
          "type": "",
          "function": "",
          "file": "/home/xxxx/api/vendor/api-platform/core/src/Bridge/Symfony/Routing/IriConverter.php",
          "line": 107,
          "args": []
        },
    

    I tried different formats and check the the routes too:

     julian@js:~/xxxxx/api$ ./bin/console debug:router
     ------------------------------- -------- -------- ------ ----------------------------------- 
      Name                            Method   Scheme   Host   Path                               
     ------------------------------- -------- -------- ------ ----------------------------------- 
      _wdt                            ANY      ANY      ANY    /_wdt/{token}                      
      _profiler_home                  ANY      ANY      ANY    /_profiler/                        
      _profiler_search                ANY      ANY      ANY    /_profiler/search                  
      _profiler_search_bar            ANY      ANY      ANY    /_profiler/search_bar              
      _profiler_phpinfo               ANY      ANY      ANY    /_profiler/phpinfo                 
      _profiler_search_results        ANY      ANY      ANY    /_profiler/{token}/search/results  
      _profiler_open_file             ANY      ANY      ANY    /_profiler/open                    
      _profiler                       ANY      ANY      ANY    /_profiler/{token}                 
      _profiler_router                ANY      ANY      ANY    /_profiler/{token}/router          
      _profiler_exception             ANY      ANY      ANY    /_profiler/{token}/exception       
      _profiler_exception_css         ANY      ANY      ANY    /_profiler/{token}/exception.css   
      _twig_error_test                ANY      ANY      ANY    /_error/{code}.{_format}           
      api_entrypoint                  ANY      ANY      ANY    /{index}.{_format}                 
      api_doc                         ANY      ANY      ANY    /docs.{_format}                    
      api_jsonld_context              ANY      ANY      ANY    /contexts/{shortName}.{_format}            
      api_foos_get_collection         GET      ANY      ANY    /foos.{_format}                    
      api_foos_post_collection        POST     ANY      ANY    /foos.{_format}                    
      api_foos_get_item               GET      ANY      ANY    /foos/{id}.{_format}               
      api_foos_put_item               PUT      ANY      ANY    /foos/{id}.{_format}               
      api_foos_delete_item            DELETE   ANY      ANY    /foos/{id}.{_format}               
    
     ------------------------------- -------- -------- ------ ----------------------------------- 
    

    It's possible what I need some special library in my server? What I'm doing wrong?

    Thanks in advance!