2016-01-15 117 views
1

實際上,我正在嘗試爲我的REST服務生成swagger.json。 我成功地使用jersy來完成它,但現在我們在服務中不使用jersy,我們只是使用Jax-rs,所以現在我無法生成它並得到了404錯誤代碼。無法從Swagger(swagger-jaxrs)獲取json

這裏是我的POM依賴

<dependencies> 

    <dependency> 
     <groupId>io.swagger</groupId> 
     <artifactId>swagger-jaxrs</artifactId> 
     <version>1.5.6</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.ws.rs</groupId> 
     <artifactId>jsr311-api</artifactId> 
     <version>1.1.1</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.mockito</groupId> 
     <artifactId>mockito-all</artifactId> 
     <version>1.9.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.reflections</groupId> 
     <artifactId>reflections</artifactId> 
     <version>0.9.10</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-io</groupId> 
     <artifactId>commons-io</artifactId> 
     <version>2.4</version> 
    </dependency> 

</dependencies> 

,這是我的應用程序配置應用

import java.util.HashSet; 
import java.util.Set; 

import javax.ws.rs.ApplicationPath; 
import javax.ws.rs.core.Application; 

import com.skios.endpoint.EmployeeEndpoint; 
import com.skios.endpoint.ShopsEndpoint; 

import io.swagger.jaxrs.config.BeanConfig; 
import io.swagger.jaxrs.listing.ApiListingResource; 
import io.swagger.jaxrs.listing.SwaggerSerializers; 

@ApplicationPath("api") 
public class AppConfiguration extends Application { 

public AppConfiguration() { 
    BeanConfig beanConfig = new BeanConfig(); 
    beanConfig.setVersion("1.0.2"); 
    beanConfig.setSchemes(new String[] { "http" }); 
    beanConfig.setHost("localhost:7070"); 
    beanConfig.setBasePath("app"); 
    beanConfig.setResourcePackage("com.skios.endpoint"); 
    beanConfig.setScan(true); 
} 

@SuppressWarnings({ "rawtypes", "unchecked" }) 
@Override 
public Set<Class<?>> getClasses() { 

    Set<Class<?>> resources = new HashSet(); 
    resources.add(ShopsEndpoint.class); 
    resources.add(EmployeeEndpoint.class); 
    // ... 
    resources.add(ApiListingResource.class); 
    resources.add(SwaggerSerializers.class); 
    return resources; 
} 
} 

,這些是我的終點

@Api(value = "/employees", description = "Endpoint for employee listing") 
@Path("/employees") 
public class EmployeeEndpoint {} 

@Path("/shops") 
@Api(value="/shops", description="Shops") 
public class ShopsEndpoint {} 

當我試圖進入andnow swagger.json文件的路徑

http://localhost:7070/MavenSwaggerTest/api/swagger.json 

i got 404 error code. 

那麼是什麼問題?誰能幫我? 謝謝

+0

您是否在日誌中看到任何其他錯誤(啓動時)?你能給出一個你用來訪問你的API的示例URL嗎(我認爲你可以成功做到這一點)? – Ron

+0

@Ron:非常感謝您的回覆,但實際上我沒有在控制檯中發現任何錯誤,我正在通過Tomcat v8進行測試,這也是我的項目>> https://drive.google.com/open? id = 0B1u4YdligQ8YYllFUGVCbm5seHM請檢查它 –

+0

這不是說swagger.json不可訪問,它的任何內容都不可訪問 - 甚至不是您的商店資源。 JAX-RS只是一個規範和一組接口。你可以寫一些通用的,但你需要將它掛鉤到實現。 swagger-jaxrs會拉入舊版球衣,但這還不夠。你的第一步是修復應用程序,使其運行。 – Ron

回答

0

您還沒有正確配置您的ApplicationPathBasePath

像這樣配置它。

@ApplicationPath("/api") 

beanConfig.setBasePath("/api");

現在http://localhost:7070/MavenSwaggerTest/api/swagger.json會的工作,除非有其他任何問題。