Next.js Generator
The Next.js Client Generator generates components for Server Side Rendered applications using Next.js
Install
Next + Express Server
Create a Next.js application with express server. The easiest way is to execute:
$ npx create-next-app your-app-name
# or
$ yarn create next-app your-app-nameInstalling the Generator Dependencies
Enable TypeScript in your next project
$ yarn add --dev typescript @types/react @types/nodeInstall required dependencies:
$ yarn add lodash.get lodash.has @types/lodash isomorphic-unfetchGenerating Routes
$ npx @api-platform/client-generator https://demo.api-platform.com . --generator next --resource book
# Replace the URL by the entrypoint of your Hydra-enabled APINote: Omit the resource flag to generate files for all resource types exposed by the API.
Starting the Project
You can launch the server with
$ yarn devGo to https://localhost:3000/books/ to start using your app.
Screenshots
The Distribution: Create Powerful APIs with Ease
The API Component
- General Design Considerations
- GraphQL Support
- Enabling GraphQL
- Changing Location of the GraphQL Endpoint
- GraphiQL
- GraphQL Playground
- Modifying or Disabling the Default IDE
- Request with application/graphql Content-Type
- Queries
- Mutations
- Operations
- Workflow of the Resolvers
- Events
- Filters
- Pagination
- Security
- Serialization Groups
- Name Conversion
- Custom Types
- Modify the Extracted Types
- Changing the Serialization Context Dynamically
- Export the Schema in SDL
- Handling File Upload
- Filters
- Doctrine ORM and MongoDB ODM Filters
- Elasticsearch Filters
- Serializer Filters
- Creating Custom Filters
- ApiFilter Annotation
- The Serialization Process
- Overall Process
- Available Serializers
- The Serialization Context, Groups and Relations
- Using Serialization Groups
- Using Serialization Groups per Operation
- Embedding Relations
- Calculated Field
- Changing the Serialization Context Dynamically
- Changing the Serialization Context on a Per-item Basis
- Name Conversion
- Decorating a Serializer and Adding Extra Data
- Entity Identifier Case
- Embedding the JSON-LD Context
- Collection Relation
- Overriding Default Order
- OpenAPI Specification Support (formerly Swagger)
- Pushing Related Resources Using HTTP/2
- Using External Vocabularies
- NelmioApiDocBundle Integration
- Configuration
The Schema Generator Component
- Configuration
- Customizing PHP Namespaces
- Forcing a Field Range
- Forcing a Field Cardinality
- Forcing a Relation Table Name
- Forcing (or Disabling) a Class Parent
- Forcing a Class to be Abstract
- Forcing a Nullable Property
- Forcing a Unique Property
- Making a Property Read-Only
- Making a Property Write-Only
- Forcing a Property to be in a Serialization Group
- Forcing an Embeddable Class to be Embedded
- Author PHPDoc
- Disabling Generators and Creating Custom Ones
- Skipping Accessor Method Generation
- Disabling the id Generator
- Generating UUIDs
- User submitted UUIDs
- Generating Custom IDs
- Disabling Usage of Doctrine Collections
- Changing the Field Visibility
- Generating @Assert\Type Annotations
- Forcing Doctrine Inheritance Mapping Annotation
- Interfaces and Doctrine Resolve Target Entity Listener
- Custom Schemas
- Checking GoodRelation Compatibility
- PHP File Header
- Full Configuration Reference