API Platform에서 속성이 응답에 포함되지 않을 때의 조치
5583 단어 심포니API-Platform
업데이트 정보
2020/09/09 getter
및 setter
모두에 형식 정보가 없으면 POST 매개 변수에 표시되지 않는 현상을 확인했습니다.
소개
API Platform을 사용하고 있고 약간 빠진 부분의 비망록
문제
이하와 같은 설정을 실시하고 있을 때, Book 자원을 취득했을 때의 응답에 isPublished
가 포함되지 않는다.
/**
* @ApiResource(
* normalizationContext={"groups"={"book:read"}},
* denormalizationContext={"groups"={"book:write"}},
* collectionOperations={
* "get"={},
* "post"={},
* },
* itemOperations={
* "get"={},
* "delete"={},
* },
* )
*
* @ORM\Entity(repositoryClass=UserRepository::class)
*/
class Book
{
...
/**
* @Groups({"book:read"})
*/
private $isPublished = false;
...
}
원인
Getter의 이름이 속성 이름과 어긋났습니다. 아무래도 API Platform에서는 isPublished
에 대한 Getter는 getIsPublished
이어야 하는 모양. 아래와 같이 수정하는 것으로 무사히 응답에 isPublished
가 포함되었습니다. (어느 쪽이라도 Symfony의 시리얼 라이저 사양?)
Phpstorm을 사용하고 있어, cmd + n
로부터 Getter를 살리면, is〇〇
계는 디폴트로 get가 생략되기 때문에 빠져 버렸습니다....
Phpstorm을 사용하는 분은 주의를.
class Book
{
...
public function isPublished()
{
return $this->isPublished;
}
...
}
↓
class Book
{
...
public function getIsPublished()
{
return $this->isPublished;
}
...
}
getter/setter에 형이 없는 경우
getter 또는 setter 중 하나에 형식 정보가 있으면 좋은 모양.
유형 정보 없음
User.php
...
/**
* @Groups({"user:write"})
*/
private $plainPassword;
public function getPlainPassword()
{
return $this->plainPassword;
}
public function setPlainPassword($plainPassword): self
{
$this->plainPassword = $plainPassword;
return $this;
}
...
↓
유형 정보 있음
User.php
...
/**
* @Groups({"user:write"})
*/
private $plainPassword;
public function getPlainPassword(): ?string
{
return $this->plainPassword;
}
public function setPlainPassword(?string $plainPassword): self
{
$this->plainPassword = $plainPassword;
return $this;
}
...
↓
Reference
이 문제에 관하여(API Platform에서 속성이 응답에 포함되지 않을 때의 조치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ggg-mzkr/items/4d9f20bb48a5a8fd5410
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
API Platform을 사용하고 있고 약간 빠진 부분의 비망록
문제
이하와 같은 설정을 실시하고 있을 때, Book 자원을 취득했을 때의 응답에 isPublished
가 포함되지 않는다.
/**
* @ApiResource(
* normalizationContext={"groups"={"book:read"}},
* denormalizationContext={"groups"={"book:write"}},
* collectionOperations={
* "get"={},
* "post"={},
* },
* itemOperations={
* "get"={},
* "delete"={},
* },
* )
*
* @ORM\Entity(repositoryClass=UserRepository::class)
*/
class Book
{
...
/**
* @Groups({"book:read"})
*/
private $isPublished = false;
...
}
원인
Getter의 이름이 속성 이름과 어긋났습니다. 아무래도 API Platform에서는 isPublished
에 대한 Getter는 getIsPublished
이어야 하는 모양. 아래와 같이 수정하는 것으로 무사히 응답에 isPublished
가 포함되었습니다. (어느 쪽이라도 Symfony의 시리얼 라이저 사양?)
Phpstorm을 사용하고 있어, cmd + n
로부터 Getter를 살리면, is〇〇
계는 디폴트로 get가 생략되기 때문에 빠져 버렸습니다....
Phpstorm을 사용하는 분은 주의를.
class Book
{
...
public function isPublished()
{
return $this->isPublished;
}
...
}
↓
class Book
{
...
public function getIsPublished()
{
return $this->isPublished;
}
...
}
getter/setter에 형이 없는 경우
getter 또는 setter 중 하나에 형식 정보가 있으면 좋은 모양.
유형 정보 없음
User.php
...
/**
* @Groups({"user:write"})
*/
private $plainPassword;
public function getPlainPassword()
{
return $this->plainPassword;
}
public function setPlainPassword($plainPassword): self
{
$this->plainPassword = $plainPassword;
return $this;
}
...
↓
유형 정보 있음
User.php
...
/**
* @Groups({"user:write"})
*/
private $plainPassword;
public function getPlainPassword(): ?string
{
return $this->plainPassword;
}
public function setPlainPassword(?string $plainPassword): self
{
$this->plainPassword = $plainPassword;
return $this;
}
...
↓
Reference
이 문제에 관하여(API Platform에서 속성이 응답에 포함되지 않을 때의 조치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ggg-mzkr/items/4d9f20bb48a5a8fd5410
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
/**
* @ApiResource(
* normalizationContext={"groups"={"book:read"}},
* denormalizationContext={"groups"={"book:write"}},
* collectionOperations={
* "get"={},
* "post"={},
* },
* itemOperations={
* "get"={},
* "delete"={},
* },
* )
*
* @ORM\Entity(repositoryClass=UserRepository::class)
*/
class Book
{
...
/**
* @Groups({"book:read"})
*/
private $isPublished = false;
...
}
Getter의 이름이 속성 이름과 어긋났습니다. 아무래도 API Platform에서는
isPublished
에 대한 Getter는 getIsPublished
이어야 하는 모양. 아래와 같이 수정하는 것으로 무사히 응답에 isPublished
가 포함되었습니다. (어느 쪽이라도 Symfony의 시리얼 라이저 사양?)Phpstorm을 사용하고 있어,
cmd + n
로부터 Getter를 살리면, is〇〇
계는 디폴트로 get가 생략되기 때문에 빠져 버렸습니다....Phpstorm을 사용하는 분은 주의를.
class Book
{
...
public function isPublished()
{
return $this->isPublished;
}
...
}
↓
class Book
{
...
public function getIsPublished()
{
return $this->isPublished;
}
...
}
getter/setter에 형이 없는 경우
getter 또는 setter 중 하나에 형식 정보가 있으면 좋은 모양.
유형 정보 없음
User.php
...
/**
* @Groups({"user:write"})
*/
private $plainPassword;
public function getPlainPassword()
{
return $this->plainPassword;
}
public function setPlainPassword($plainPassword): self
{
$this->plainPassword = $plainPassword;
return $this;
}
...
↓
유형 정보 있음
User.php
...
/**
* @Groups({"user:write"})
*/
private $plainPassword;
public function getPlainPassword(): ?string
{
return $this->plainPassword;
}
public function setPlainPassword(?string $plainPassword): self
{
$this->plainPassword = $plainPassword;
return $this;
}
...
↓
Reference
이 문제에 관하여(API Platform에서 속성이 응답에 포함되지 않을 때의 조치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ggg-mzkr/items/4d9f20bb48a5a8fd5410
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
...
/**
* @Groups({"user:write"})
*/
private $plainPassword;
public function getPlainPassword()
{
return $this->plainPassword;
}
public function setPlainPassword($plainPassword): self
{
$this->plainPassword = $plainPassword;
return $this;
}
...
...
/**
* @Groups({"user:write"})
*/
private $plainPassword;
public function getPlainPassword(): ?string
{
return $this->plainPassword;
}
public function setPlainPassword(?string $plainPassword): self
{
$this->plainPassword = $plainPassword;
return $this;
}
...
Reference
이 문제에 관하여(API Platform에서 속성이 응답에 포함되지 않을 때의 조치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ggg-mzkr/items/4d9f20bb48a5a8fd5410텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)