http://theblasfrompas.blogspot.com.au/2017/05/using-httpie-with-spring-boot-rest.html
I decided to take that same example and add Swagger UI to the RESTful endpoints. The full source code is here.
https://github.com/papicella/httpie-springboot
In short what you need is the following maven dependancies and that will add all you need. I found it works much cleaner if you use the same version of both these dependancies for some reason
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.6.1</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.6.1</version> </dependency>
Finally a Class file describing the config and enabling Swagger is required as follows
package pivotal.io.boot.httpie.demo; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import static springfox.documentation.builders.PathSelectors.regex; @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket swaggerSpringMvcPlugin() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("pivotal.io.boot.httpie.demo")) .paths(regex("/api/employee/emps.*")) .build() .apiInfo(metaData()); } private ApiInfo metaData() { ApiInfo apiInfo = new ApiInfo( "Spring Boot Employee REST API", "Spring Boot Employee REST API", "1.0", "Terms of service", new Contact("Pas Apicella", "https://www.blogger.com/profile/09389663166398991762", "papicella@pivotal.io"), "Apache License Version 2.0", "https://www.apache.org/licenses/LICENSE-2.0"); return apiInfo; } }
The GitHub repo also included a Pivotal Cloud Foundry manifest.yml file to make it easy to deploy to Pivotal Cloud Foundry. The example uses a static hostname BUT can easily be changed to use a random-route or alter the hostname itself.
applications:
- name: pas-swagger-demo
memory: 1G
instances: 1
hostname: pas-swagger-demo
path: ./target/httpie-springboot-0.0.1-SNAPSHOT.jar
env:
JAVA_OPTS: -Djava.security.egd=file:///dev/urando
Then it's the simple "cf push"
$ cf push
pasapicella@pas-macbook:~/piv-projects/httpie-springboot$ cf push
Using manifest file /Users/pasapicella/piv-projects/httpie-springboot/manifest.yml
Creating app pas-swagger-demo in org apples-pivotal-org / space development as papicella@pivotal.io...
OK
Creating route pas-swagger-demo.cfapps.io...
OK
..
Showing health and status for app pas-swagger-demo in org apples-pivotal-org / space development as papicella@pivotal.io...
OK
requested state: started
instances: 1/1
usage: 1G x 1 instances
urls: pas-swagger-demo.cfapps.io
last uploaded: Wed Jun 14 03:32:31 UTC 2017
stack: cflinuxfs2
buildpack: container-certificate-trust-store=2.0.0_RELEASE java-buildpack=v3.15-offline-https://github.com/cloudfoundry/java-buildpack.git#a3a9e61 java-main java-opts open-jdk-like-jre=1.8.0_121 open-jdk-like-memory-calculator=2.0.2_RELEASE spring-auto-reconfigur...
state since cpu memory disk details
#0 running 2017-06-14 01:33:40 PM 291.5% 510.9M of 1G 154.9M of 1G
The application is running on Pivotal Web Services as follows:
http://pas-swagger-demo.cfapps.io/swagger-ui.html
No comments:
Post a Comment