Esporre un'API con API平台
Esporre un'API con API平台
阿比阿莫终点站实现azione del sito留言簿。如果你有一个美丽的世界,你会有一个美丽的世界?那是一种必须使用的方法,一种可移动的方法,一种可视的方法,一种可以使用的方法,一种可以使用的方法。
在任务中,单独执行api。
Installazione di API平台
Esporre un'API scrivendo del codice è可能,ma se vogliamo usare gli标准è preferibile usare una soluzione che si occupi del lavoro sporco。Una soluzione come API平台:
1
$ob娱乐下载Symfony作曲家请求API
这是会议上的一个问题
Qualche attributo苏拉类会议è tutto ciò di cui abbiamo bisogno per configurare l'API:
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
——/ src /实体/ Conference.php+ + + b / src /实体/ Conference.php@@ -2,35 +2,52 @@名称空间的应用程序\实体;+使用ApiPlatform \ \ ApiResource元数据;+使用ApiPlatform \ \元数据获取;+使用ApiPlatform \ \ GetCollection元数据;使用App \ Repository \ ConferenceRepository;使用原则\常见\ \ ArrayCollection集合;使用原则\常见\集合\集合;使用Doctrine\ORM\Mapping作为ORM;使用Syob娱乐下载mfony \桥\学说\验证器\ \ UniqueEntity约束;+使用Syob娱乐下载mfony \序列化器\注释\ \组件组;使用Syob娱乐下载mfony轰\组件\字符串\ \ SluggerInterface;#[ORM\Entity(repositoryClass: ConferenceRepository::class)] #[UniqueEntity('slug')]+ #【ApiResource (+操作:[+ new Get(normalizationContext: ['groups' => 'conference:item']),+ new GetCollection(normalizationContext: ['groups' => 'conference:list'])+),+ order: ['year' => 'DESC', 'city' => 'ASC'],+ paginationEnabled: false,+))类会议{#[ORM\Id] #[ORM\GeneratedValue] #[ORM\列]+ #[分组(['会议:列表','会议:项目'])]int $id = null;# [ORM列(长度:255)\]+ #[分组(['会议:列表','会议:项目'])]$city = null;# [ORM列(长度:4)\]+ #[分组(['会议:列表','会议:项目'])]字符串$year = null;# (ORM \列)+ #[分组(['会议:列表','会议:项目'])]bool $isInternational = null;#[ORM\OneToMany(mappedBy: 'conference', targetEntity: Comment::class, orphanRemoval: true)] private Collection $comments;#[ORM\列(类型:'string',长度:255,唯一:true)]+ #[分组(['会议:列表','会议:项目'])]字符串$slug = null;公共函数__construct()
'attributo主要ApiResource
在会议上配置api。内拉胖种,有限的可能性,真主安拉索拉得到
E配置的变化,有资格作为我的视野来一般的会议。
Per impostazione predefinita, il punto di ingresso principale Per l'API è/ api
configurazione in配置/线路/ api_platform.yaml
, aggiunta dalla ricetta del pacchetto。
Un' interface web permette di interagire con le API:
每testare le variation Usiamola possibilità:
想象一下,每一票都是零!
Esposizione di un'API per i commenti
Facciamo lo stesso per i评论:
12 34 56 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
——/ src /实体/ Comment.php+ + + b / src /实体/ Comment.php@@ -2,41 +2,63 @@名称空间的应用程序\实体;+使用ApiPlatform \学说\ Orm SearchFilter \滤波器\;+使用ApiPlatform \ \ ApiFilter元数据;+使用ApiPlatform \ \ ApiResource元数据;+使用ApiPlatform \ \元数据获取;+使用ApiPlatform \ \ GetCollection元数据;使用App \ Repository \ CommentRepository;使用原则\ DBAL \类型\类型;使用Doctrine\ORM\Mapping作为ORM;+使用Syob娱乐下载mfony \序列化器\注释\ \组件组;使用Syob娱乐下载mfony\Component\Validator\Constraints作为Assert;#[ORM\Entity(repositoryClass: CommentRepository::class)] #[ORM\HasLifecycleCallbacks]+ #【ApiResource (+操作:[+ new Get(normalizationContext: ['groups' => 'comment:item']),+ new GetCollection(normalizationContext: ['groups' => 'comment:list'])+),+ order: ['createdAt' => 'DESC'],+ paginationEnabled: false,+))+#[ApiFilter(SearchFilter::class, properties: ['conference' => 'exact'])]类注释{#[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column]+ #[Groups(['comment:list', 'comment:item'])]int $id = null;#[ORM\列(长度:255)]#[Assert\NotBlank]+ #[Groups(['comment:list', 'comment:item'])]字符串$author = null;#[ORM\Column(type: Types::TEXT)] #[Assert\NotBlank]+ #[Groups(['comment:list', 'comment:item'])]字符串$text = null;#[ORM\列(长度:255)]#[Assert\NotBlank] #[Assert\Email]+ #[Groups(['comment:list', 'comment:item'])]字符串$email = null;# (ORM \列)+ #[Groups(['comment:list', 'comment:item'])]\DateTimeImmutable $createdAt = null;#[ORM\ManyToOne(inversedBy: 'comments')] #[ORM\JoinColumn(nullable: false)]+ #[Groups(['comment:list', 'comment:item'])]会议$ Conference = null;#[ORM\列(长度:255,nullable: true)]+ #[Groups(['comment:list', 'comment:item'])]$photoFilename = null;#[ORM\列(长度:255,选项:['default' => 'submitted'])]
Lo stesso tipo di attributi sono usati per configurare la class。
限制我的评论
根据impostazione predefinita, API平台的语音数据库。这是我的评论,这是我的独奏曲。
发生限制是gli elementi restituiti dall'API, bisogna creare un servizio che implementiQueryCollectionExtensionInterface
每句话都有原则,每句话都有原则。在alternativa中,si può implementareQueryItemExtensionInterface
每个控制器gli元素:
这门课,这门课,这门课,这门课,这门课,这门课评论
e modifica il查询构建器di Doctrine per think are solo i commenti nello stato发表
.
Configurare歌珥
根据impostazione predefinita, le policy di sicurezza dei moderni客户端HTTP non consentono la chiamata dell'API da un domino diverso。NelmioCorsBundle, installato come partte diComposer req API
在base真主安拉变量d'ambiente中的跨起源资源共享CORS_ALLOW_ORIGIN
.
Per impostazione predefinita, il suo valore, definito in.env
, permette richieste HTTP da本地主机
e127.0.0.1
Su qualsiasi porta。Questo è esattamente ciò che ci serve, perché nel prosimo passo creeremo una SPA che avrà un suo server web, che richiamerà l'API。
而oltre
- 教程API平台su SymfonyCastsob娱乐下载;
- 每能力是il支持di GraphQL, esguire
作曲家需要webonyx/graphql-php
, quindi visitare l'indirizzo/ api / graphql
.