APIプラットフォーム

画像
Web 3.0のアプローチでは、APIファーストおよびリンクデータ(またはセマティックWebのようなもの)アプローチがますます使用されています。 この点に関して、読者は、 schema.orgで組み立てられたスキームに基づいてAPIを簡単に作成し、 JSON-LDの形式で回答を生成するためのフレームワークに精通してください。

これは、 Api-platformチュートリアルの短縮バージョンです


  1. Composerを使用したプロジェクトのインストール
    composer create-project api-platform/api-platform blog-api 

  2. デフォルトのデモを削除する
    1. ファイルapp / config / schema.ymlおよびapp / config / services.ymlをクリアします
    2. src / AppBundle / Entityのすべてのファイルを削除します

  3. データモデルの作成
    1. API -platformにはschema.org辞書モデルジェネレーターが含まれています
    2. サイトにアクセスして、必要なものを説明するスキームを見つけます。 この場合、 schema.org / BlogPosting
    3. ここで、構成ファイルapp / config / schema.ymlを作成する必要があります。 その中で、型を作成する名前空間、作成する型、必要なフィールドを示します(Schema.org Webサイト(http://schema.org/)が最も完全なエンティティスキーマを提供し、通常は説明されたフィールドのサブセットのみが必要なため) 。 さらに、エンティティ間の関係を記述することもできます。

       # app/config/schema.yml annotationGenerators: - ApiPlatform\SchemaGenerator\AnnotationGenerator\PhpDocAnnotationGenerator - ApiPlatform\SchemaGenerator\AnnotationGenerator\DoctrineOrmAnnotationGenerator - ApiPlatform\SchemaGenerator\AnnotationGenerator\ConstraintAnnotationGenerator - ApiPlatform\SchemaGenerator\AnnotationGenerator\DunglasApiAnnotationGenerator namespaces: entity: AppBundle\Entity types: SocialMediaPosting: ~ BlogPosting: ~ Article: properties: articleBody: ~ articleSection: ~ CreativeWork: properties: author: range: Person cardinality: (*..0) headline: ~ isFamilyFriendly: ~ datePublished: ~ Thing: properties: name: ~ Person: properties: {} 


  4. クラスを生成し、無料で取得します。

    • フィールドドキュメントはschema.orgから取得され、PHPDocに翻訳されます
    • Doctrine ORMアノテーション
    • symfony検証アノテーション
    • Iri注釈は、セマンティック(セマンティック)データ構造を識別するために必要です
    • PSR-2コーディングスタイルとの互換性


     bin/schema generate-types src/ app/config/schema.yml 


  5. データベースを作成する
     app/console doctrine:database:create 

  6. モデルのスキーム
     app/console doctrine:schema:create 

    スキーマバンドルを使用できるため、スキームからのモデルの生成は、Apiプラットフォームフレームワークだけでなく、シンプルなPHPでもサポートされています。
  7. APIを作成する
    ApiBundleはこれに直接関与しています。 Symfonyサービスの形式でAPIとして公開したいものだけを示すだけで十分です。
    このチュートリアルでは、これらはBlogPostingおよびPersonクラスになります。
     # app/config/services.yml services: resource.blog_posting: parent: "api.resource" arguments: [ "AppBundle\\Entity\\BlogPosting" ] tags: [ { name: "api.resource" } ] resource.person: parent: "api.resource" arguments: [ "AppBundle\\Entity\\Person" ] tags: [ { name: "api.resource" } ] 


    ほら! Apiはすぐに使用できます。
  8. 確認する

     app/console server:start 

    ローカルホスト:8000 / doc
    画像

    APIを便利に使用するには、Postman(Google Chromeの拡張機能) www.getpostman.comを使用できます

    著者のリストをリクエストする



    著者を追加



    記事を追加:



    リストをリクエスト:



    検証を確認します。 isFamilyFriendlyフィールドはブール値でなければなりません。

     { "name": "API Platform is great", "headline": "You'll love that framework!", "articleBody": "The body of my article.", "articleSection": "technology", "author": "/people/1", "isFamilyFriendly": "maybe", "datePublished": "2015-05-11" } 

    そして、次の方法でこれについて通知されます。
     { "@context": "/contexts/ConstraintViolationList", "@type": "ConstraintViolationList", "hydra:title": "An error occurred", "hydra:description": "isFamilyFriendly: This value should be of type boolean.\n", "violations": [ { "propertyPath": "isFamilyFriendly", "message": "This value should be of type boolean." } ] } 

    修正します:
     { "name": "API Platform is great", "headline": "You'll love that framework!", "articleBody": "The body of my article.", "articleSection": "technology", "author": "/people/1", "isFamilyFriendly": true, "datePublished": "2015-05-11" } 

    そして、記事が正常に追加されるはずです。



APIプラットフォームの主要コンポーネントであるApiBundleのさまざまな機能の別のリストを次に示します。

Source: https://habr.com/ru/post/J269377/


All Articles