LIGHT

  • News
  • Docs
  • Community
  • Reddit
  • GitHub

JSON Query Parameter

style and explode cover the most common serialization methods, but not all. For more complex scenarios (for example, a JSON-formatted object in the query string), you can use the content keyword and specify the media type that defines the serialization format. Or you can use schema to define the JSON object. For more information, please visit schema vs content.

In this tutorial, we are going to create a service with one endpoint that accepts a JSON object as a query parameter. The use case is provided by one of our contributors @Dasanko in this issue

To generate the example project, we need to create a specification file named openapi.yaml and a config.json for the light-codegen.

You can find these two files and a README.md in the model-config repository. The following is the specification.

openapi: 3.0.0

info:
  title: TestProject
  version: 1.0.0

servers:
  - url: 'https://localhost:8443/api'

paths:
  /testEndPoint:
    get:
      parameters:
        - in: query
          name: TestObject
          schema:
            $ref: '#/components/schemas/TestObject'
      responses:
        '200':
          description: History something something
          content:
            application/json:
              schema:
                type: string

components:
  schemas:
    TestObject:
      type: object
      properties:
        testProperty:
          type: string

To generate the project with light-codegen.

cd ~/networknt
rm -rf light-example-4j/rest/openapi/json-query-param
java -jar light-codegen/codegen-cli/target/codegen-cli.jar -f openapi -o light-example-4j/rest/openapi/json-query-param -m model-config/rest/openapi/json-query-param/openapi.yaml -c model-config/rest/openapi/json-query-param/config.json

If you don’t want to generate the project yourself, you can check the generated project in the light-example-4j

Now you can start the server in the light-example-4j folder.

cd ~/networknt/light-example-4j/rest/openapi/json-query-param
mvn clean install exec:exec

Once the server is up and running, you can issue the following commands from another terminal.

curl -k -X GET https://localhost:8443/api/testEndPoint?TestObject={testProperty=testing}
curl -k -X GET https://localhost:8443/api/testEndPoint?TestObject=testProperty,testing
curl -k -X GET https://localhost:8443/api/testEndPoint?testProperty=testing
curl -k -X GET https://localhost:8443/api/testEndPoint?TestObject[testProperty]=testing

All the above commands should pass the light-rest-4j OpenAPI validator without any error. As there is no business logic implemented in the example application, the response body is empty with a response code of 200.

If you are interested, you can add the business logic to get the input parameter and return something meaningful.

  • About Light
    • Overview
    • Testimonials
    • What is Light
    • Features
    • Principles
    • Benefits
    • Roadmap
    • Community
    • Articles
    • Videos
    • License
    • Why Light Platform
  • Getting Started
    • Get Started Overview
    • Environment
    • Light Codegen Tool
    • Light Rest 4j
    • Light Tram 4j
    • Light Graphql 4j
    • Light Hybrid 4j
    • Light Eventuate 4j
    • Light Oauth2
    • Light Portal Service
    • Light Proxy Server
    • Light Router Server
    • Light Config Server
    • Light Saga 4j
    • Light Session 4j
    • Webserver
    • Websocket
    • Spring Boot Servlet
  • Architecture
    • Architecture Overview
    • API Category
    • API Gateway
    • Architecture Patterns
    • CQRS
    • Eco System
    • Event Sourcing
    • Fail Fast vs Fail Slow
    • Integration Patterns
    • JavaEE declining
    • Key Distribution
    • Microservices Architecture
    • Microservices Monitoring
    • Microservices Security
    • Microservices Traceability
    • Modular Monolith
    • Platform Ecosystem
    • Plugin Architecture
    • Scalability and Performance
    • Serverless
    • Service Collaboration
    • Service Mesh
    • SOA
    • Spring is bloated
    • Stages of API Adoption
    • Transaction Management
    • Microservices Cross-cutting Concerns Options
    • Service Mesh Plus
    • Service Discovery
  • Design
    • Design Overview
    • Design First vs Code First
    • Desgin Pattern
    • Service Evolution
    • Consumer Contract and Consumer Driven Contract
    • Handling Partial Failure
    • Idempotency
    • Server Life Cycle
    • Environment Segregation
    • Database
    • Decomposition Patterns
    • Http2
    • Test Driven
    • Multi-Tenancy
    • Why check token expiration
    • WebServices to Microservices
  • Cross-Cutting Concerns
    • Concerns Overview
  • API Styles
    • Light-4j for absolute performance
    • Style Overview
    • Distributed session on IMDG
    • Hybrid Serverless Modularized Monolithic
    • Kafka - Event Sourcing and CQRS
    • REST - Representational state transfer
    • Web Server with Light
    • Websocket with Light
    • Spring Boot Integration
    • Single Page Application
    • GraphQL - A query language for your API
    • Light IBM MQ
    • Light AWS Lambda
    • Chaos Monkey
  • Infrastructure Services
    • Service Overview
    • Light Proxy
    • Light Mesh
    • Light Router
    • Light Portal
    • Messaging Infrastructure
    • Centralized Logging
    • COVID-19
    • Light OAuth2
    • Metrics and Alerts
    • Config Server
    • Tokenization
    • Light Controller
  • Tool Chain
    • Tool Chain Overview
  • Utility Library
  • Service Consumer
    • Service Consumer
  • Development
    • Development Overview
  • Deployment
    • Deployment Overview
    • Frontend Backend
    • Linux Service
    • Windows Service
    • Install Eventuate on Windows
    • Secure API
    • Client vs light-router
    • Memory Limit
    • Deploy to Kubernetes
  • Benchmark
    • Benchmark Overview
  • Tutorial
    • Tutorial Overview
  • Troubleshooting
    • Troubleshoot
  • FAQ
    • FAQ Overview
  • Milestones
  • Contribute
    • Contribute to Light
    • Development
    • Documentation
    • Example
    • Tutorial
“JSON Query Parameter” was last updated: May 13, 2019: fixes #86 add tutorial for json object as query parameter (8cffa5b)
Improve this page
  • News
  • Docs
  • Community
  • Reddit
  • GitHub
  • About Light
  • Getting Started
  • Architecture
  • Design
  • Cross-Cutting Concerns
  • API Styles
  • Infrastructure Services
  • Tool Chain
  • Utility Library
  • Service Consumer
  • Development
  • Deployment
  • Benchmark
  • Tutorial
  • Troubleshooting
  • FAQ
  • Milestones
  • Contribute