I write OPENAPI 3.0 yaml file as the documentation for java REST api project. It can be nicely rendered with ReDoc. And in order to help other developers and our customers to use the API I should always keep the java response java the same with the OPENAPI yaml schema definition.
So...it there some tools to help use the OPENAPI yaml schema validate JAVA Response?
I have seen some tools like rest-assured can use json-schema for response validation. But it seems that the OPENAPI schema is a little bit different from the json validation. I can not use it directly.
I solved this problem by using https://github.com/mikunn/openapi2schema. This package help translate openapi definitions into valid json schema draft 4 version. And I can then use rest-assured to validate the json response with this json schema file.
Related
I want to create a swagger json file from class with swagger annotations. It is so happened that I don't use spring mvc or jax-rs. Can swagger file be generated just having swagger maven plugin and swagger-annotations dependency?
I created a class with swagger annotations. Tried to generate a swagger json file, all I saw was - the info about the api, which I mentioned in the swagger-maven-plugin.
Once I added #Path of jax-rs to my api class - everything generated successfully, all methods, all responses
Looks like it is if you using swagger-maven-plugin.
Supports SpringMvc & JAX-RS
I am using swagger to document my REST API. But i am using swagger annotation in my code like #API, #APIOperation etc. But i dont want to add these annotation. Is there any way to generate YAML or JSON file for REST API then use these files to describes, document and visualize REST API.
The YAML/JSON is just a documentation, you cant implement them by including this file, but you can provide this documentation e.g {yourAPI}/swagger.yaml.
the problem file XML configurations spring framework and JAVA can not change ? while in others they rather use now JSON ...
I guess you want to have a spring configuration using annotation. Follow link :
https://www.mkyong.com/spring3/spring-3-javaconfig-example/
And have JSON from java class. Link:
https://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/
I want to develop one web api,that will produce and consume both JSON and XML data.
I have used JAXB for XML support and it is working fine.
Now i want to add JSON type.i studied different tutorial, all are using different dependencies as below:
jersey-media-json-jackson
jersey-json
jersey-media-multipart
please help me whcih perfect and which support both XML and JSON.
what is difference between them all?
1. Jersey-Media-Json-Jackson
Jackson JSON processor could be controlled via providing a custom Jackson 2 ObjectMapper (or ObjectMapper for Jackson 1) instance. This could be handy if you need to redefine the default Jackson behaviour and to fine-tune how your JSON data structures look like. Detailed description of all Jackson features is out of scope of this guide. The example below gives you a hint on how to wire your ObjectMapper (ObjectMapper) instance into your Jersey application.
In order to use Jackson as your JSON (JAXB/POJO) provider you need to register JacksonFeature (Jackson1Feature) and a ContextResolver<T> for ObjectMapper,
2. Jersey-Json :
Jersey JSON support comes as a set of JAX-RS MessageBodyReader<T> and MessageBodyWriter<T> providers distributed with jersey-json module. These providers enable using three basic approaches when working with JSON format:
POJO support
JAXB based JSON support
Low-level, JSONObject/JSONArray based JSON support
3. Jersey-media-multipart
The multipart in this module provide an integration of multipart/* request and response bodies in a JAX-RS runtime environment. The set of registered providers is leveraged, in that the content type for a body part of such a message reuses the same MessageBodyReader<T>/MessageBodyWriter<T> implementations as would be used for that content type as a standalone entity.
The following list of general MIME MultiPart features is currently supported:
The MIME-Version: 1.0 HTTP header is included on generated responses.
It is accepted, but not required, on processed requests.
A MessageBodyReader implementation for consuming MIME MultiPart
entities.
A MessageBodyWriter implementation for producing MIME MultiPart
entities. The appropriate #Provider is used to serialize each body
part, based on its media type.
Optional creation of an appropriate boundary parameter on a generated
Content-Type header, if not already present.
Is there a way to build Spring Web calls that consume and produce application/json formatted requests and responses respectively?
Maybe this isn't Spring MVC, I'm not sure. I'm looking for Spring libraries that behave in a similar fashion to Jersey/JSON. The best case would be if there was an annotation that I could add to the Controller classes that would turn them into JSON service calls.
A tutorial showing how to build Spring Web Services with JSON would be great.
EDIT: I'm looking for an annotation based approach (similar to Jersey).
EDIT2: Like Jersey, I am looking for REST support (POST,GET,DELETE,PUT).
EDIT3: Most preferably, this will be the pom.xml entries and some information on using the spring-js with jackson Spring native version of things.
In case other ppl get here later:
http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/
was the most useful link for me. That finally made me understand the model (after less than a day of searching).
You can certainly have controllers that return a View which is in JSON output. Take a look at the Spring-JSON project.
To consume requests in JSON I would assume you would just want a controller to pass a request parameter off to a JSON library which could parse the data?
There is no pre-packaged way to do what you want as Jersey is nicely integrated with Spring via the Jersey-Spring API so there's really no reason to re-invent the wheel.
Check this one out
Adding support for JSON and XML views
Source code for Spring Finance Manager
Since spring-mvc 3.0 official support for Ajax remoting with JSON is provided as part of Spring MVC. This includes support for generating JSON responses and binding JSON requests using the Spring MVC #Controller programming model.
see here
This feature is now part of Spring since version 3.0. You can simply use the #ResponseBody annotation to specify that you want the return value from your request handler methods to be serialized to JSON and sent as the response body. See http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/
It seems that DWR framework looks very close to what you want to get.
You can configure Spring MVC interceptors through handler mappings and then use the mappings to transform the returning data to JSON. The handler configuration can be done in xml (no need to recompile), and this can be completely transparent to the rest of the application.
It's fairly easy to annotate controllers with some annotation, and then hook up the BeanFactory bootstrap process to register the controllers within some handler mapping process.
I have used this approach to transform the result from spring controllers into GWT RPC calls.
You can also use Spring AOP to intercept controller method calls and unwrap/wrap the requests from/to JSON.