Lionframeで数分でREST API

コードジェネレーターは、通常の開発者の生活を簡素化します。どのような場合でも、これを行うことが求められ、同じタイプのコードの退屈な記述から彼を救います。 Syliusチームは、これらの発電機の1つをクリスマスまでにコミュニティへの贈り物として贈呈しました。





まえがき



数週間前のインタビューで、純粋なPHPとMySQLで簡単なREST APIを作成するためのテストタスクを受け取りました。 エンコードに約4時間かかりました。 REST APIの迅速な作成についての神秘的な@ Lakion'aのツイートにつまずいたので、私は興味を持ち、この非常に新しい動物を調べることにしました。 結果についていくつかの言葉を紹介します。



API生成



目標を達成する最短の方法はチュートリアルで説明されており、必要な手順は3つだけです。

  1. サービスのリソースとなるエンティティの生成。
  2. SyliusResourceBundleの構成。
  3. ルーティング構成。


このようなシャーマニズムは、インデックス(GETメソッド)、表示(GET)、作成(POST)、更新(PUT / PATCH)、削除(DELETE)の5つのよく知られたCRUDメソッドの作成につながります。 それでは、内部で何が起こっているのかを理解してみましょう。



そのため、エンティティの作成とDoctrineのジェネレーターへのマッピングをあきらめました。これにより、説明したプロパティへのアクセスメソッドと選択した形式のメタデータを持つ美しいエンティティが作成されました。 すべての魔法の基礎はSyliusResourceBundleであり、その構成により、ユーザーリソースを次のように追加できます。

sylius_resource: resources: my_app.entity_key: driver: doctrine/orm # required manager: default templates: App:User classes: model: MyApp\Entity\EntityName # required interface: MyApp\Entity\EntityKeyInterface controller: Sylius\Bundle\ResourceBundle\Controller\ResourceController repository: Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository
      
      





必要なパラメーターは、driverとclasses.modelの2つだけです。 カスタムコントローラーを定義しない場合、Syliusから親切に提供されたResourceControllerが使用されます。



Lionframe'aのもう1つの興味深い点-ルーティング。 チュートリアルでは、次のように構成するように提案されています。

 acme_artist: resource: acme.artist type: sylius.api
      
      





これらの2つのパラメーターを5つのルートに変換するには、ApiLoaderを使用します。具体的には、各リソースに対して5つのルートすべてを作成するloadメソッドを使用します。 URLを作成するとき、リソース名の複数の形式が使用されます(この場合、アーティスト)。 typeパラメーターの意味は、ルーティングシステムがこれらの特定のルートを通常のルートと区別し、それに応じて最初のルートがApiLoaderをプルできることです。



まとめ



木製のREST APIを自分で数時間で作成し、Lionframeを数分で作成します。 KOは、コードジェネレーターが適切であることを確認します。 また、habrazhitelに、あらゆる種類のコードジェネレーターを実際の商用プロジェクトで使用する頻度と、少なくともプロジェクトの途中まで生成されたコードのどの部分が生き残るかを尋ねたいと思います。



参照資料






All Articles