Hi James,

 

For springfox related issues, please file a ticket on the project. Springfox is 
a community project, and its authors don’t regularly monitor this mailing list.

 

 

 

From: <swagger-swaggersocket@googlegroups.com> on behalf of James Christopher 
Eckhardt <acid...@gmail.com>
Reply-To: "swagger-swaggersocket@googlegroups.com" 
<swagger-swaggersocket@googlegroups.com>
Date: Monday, 29 May 2017 at 3:07
To: Swagger <swagger-swaggersocket@googlegroups.com>
Subject: Springfox implementation - Soft-configuring data models for rest Api...

 

We are currently using the springfox SWAGGER implementation (it's fantastic by 
the way!) and are looking to expose a REST api which accepts and returns 
soft-configured JSON objects - xml too, but for now lets focus on the JSON.   

The specification for these objects may change per installation and client, 
processing of the objects is already configurable via mapping files and such, 
but the api validations of the objects need to be configurable and so too does 
the accompanying example.  In other words, I am looking for a simple example 
which could accept a model definition string at runtime (without recompile), 
preferably dynamically (without restart) and certainly without any pre-defined 
POJOs from which to generate the schema via reflection.

Currently these JSON objects are being passed as objects and then parsed - but 
the swagger ui provides no example or validation etc.

 

The idea then being that the user/client could update the model configuration 
(stored in say a file or DB) to suit their requirements - adding custom fields, 
re-arranging hierarchies or branches and renaming the fields entirely to suit 
some other system or input and then altering the data mapping configs 
accordingly - no recompile.

Please assist with an example which might take a model definition (json schema 
or such) and inject it at spring runtime.

I think the below example is perhaps a step in the right direction...  with the 
highlighted section being perhaps where I need some assistance.

 

@Component
@Order(SwaggerPluginSupport.SWAGGER_PLUGIN_ORDER)
public class TestOperation implements ApiListingScannerPlugin {

  // tag::api-listing-plugin[]
  @Override
  public List<ApiDescription> apply(DocumentationContext context) {

    return new ArrayList<ApiDescription>(
            Arrays.asList( //<1>
                    new ApiDescription(
                            "/bugs/1767",
                            "This is a bug",
                            Arrays.asList( //<2>
                                    new OperationBuilder(
                                            new CachingOperationNameGenerator())
                                            .authorizations(new ArrayList())
                                            
.codegenMethodNameStem("bug1767GET") //<3>
                                            .method(HttpMethod.GET)
                                            .notes("This is a test method")
                                            .parameters(
                                                    Arrays.asList( //<4>
                                                            new 
ParameterBuilder()
                                                                    
.description("search by description")
                                                                    .type(new 
TypeResolver().resolve(String.class))
                                                                    
.name("description")
                                                                    
.parameterType("query")
                                                                    
.parameterAccess("access")
                                                                    
.required(true)
                                                                    
.modelRef(new ModelRef("string")) //<5>
                                                                    .build()))
                                            .build()),
                            false)));
  }
  // tag::api-listing-plugin[]

  @Override
  public boolean supports(DocumentationType delimiter) {
    return DocumentationType.SWAGGER_2.equals(delimiter);
  }
}
 

 

 

 

-- 
You received this message because you are subscribed to the Google Groups 
"Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to swagger-swaggersocket+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google Groups 
"Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to swagger-swaggersocket+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to