我正在使用 SYMFONY 和 API PLATFORM 來創建 REST API。
我有一個專案物體作為 API 資源:
class Project
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $reference;
/**
* @ORM\Column(type="string", length=255, unique=true)
* @Gedmo\Slug(fields={"reference"})
*/
private $slug;
/**
* @ORM\Column(type="datetime")
* @Gedmo\Timestampable(on="create")
*/
private $createdAt;
/**
* @ORM\Column(type="datetime")
* @Gedmo\Timestampable(on="update")
*/
private $updatedAt;
/**
* @ORM\ManyToOne(targetEntity=User::class, inversedBy="projects")
* @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* @ORM\ManyToOne(targetEntity=Type::class, inversedBy="projects")
* @ORM\JoinColumn(nullable=false)
*/
private $type;
/**
* @ORM\ManyToOne(targetEntity=Status::class, inversedBy="projects")
* @ORM\JoinColumn(nullable=false)
*/
private $status;
有了郵遞員,我得到:
我如何添加編輯和顯示路徑以獲取這樣的序列化物件:
"hydra:member": [
{
...
"status": "/api/statuses/6",
"edit": "<a href='link_to_edit'>edit</a>", // add a link to edit
"show": "<a href='link_to_show'>show</a>" // add a link to show
},
知道我不想向物體屬性添加編輯和顯示或映射它們
謝謝您的幫助
uj5u.com熱心網友回復:
從技術上講,您已經有了編輯和顯示路線(如果您沒有自定義它們):您只需對每個物件的 @id 欄位的值發出 PUT 或 GET 請求。
如果您想為您的物體添加一個未映射的額外屬性,您可以執行以下操作:
/**
* @SerializedName("edit_route")
*
* @Groups({"projects:read"}))
*
* @return string
*/
public function getEditRoute()
{
return 'your_edit_route';
}
不過,我不會在這種欄位中回傳 HTML,特別是如果您的路由不是 GET,并且使用您的 API 的應用程式可能不使用 HTML,因此您最好回傳最簡單的值并讓他們做他們的事情用它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/461393.html
標籤:交响乐 序列化 反序列化 正常化 api-platform.com
上一篇:如何將物體自動裝配到服務中?