2016-04-06 34 views
0

Bir süredir çalışmakta olan bir uygulamam var. Swagger'ı araştırmaya karar verdim ve Liberty beta'nın Swagger'ın entegre olduğunu mutlu bir şekilde öğrendim. apidiscovery-1.0 on Liberty Beta

ben bunu denemeye karar verdi .. ama .. ... şey keşfetti olsun

Benim özellikleri gibi olamaz

<featureManager> 
    <feature>webProfile-7.0</feature> 
    <feature>adminCenter-1.0</feature> 

    <!-- The following features are in beta! --> 
    <feature>bluemixUtility-1.0</feature> 
    <feature>cloudant-1.0</feature> 
    <feature>logstashCollector-1.0</feature> 
    <feature>logmetCollector-1.0</feature> 
    <feature>osgiAppConsole-1.0</feature> 
    <feature>osgiBundle-1.0</feature> 
    <feature>passwordUtilities-1.0</feature> 
    <feature>wsAtomicTransaction-1.2</feature> 
    <feature>apiDiscovery-1.0</feature> 
    <feature>jaxrs-2.0</feature> 
    <feature>jdbc-4.1</feature> 
    <feature>localConnector-1.0</feature> 
</featureManager> 

Benim apiDiscovery tanımı

<apiDiscovery> 

    <webModuleDoc contextRoot="/MYCONTEXTROOT" docURL="/swagger.json" enabled="true"/> 

</apiDiscovery> 

Ama hiçbir şey. Ben Uygulamam vb @ yol vardır ve

https://localhost:9443/ibm/api/explorer

ziyaret .. ve bana yetiyor this göre IBM API'leri bulunan doğruladıktan. O siteden

..

ürün @ yol, @Api ve @SwaggerDefinition ek açıklamaları ile sınıflar ararken, JAX-RS ve Swagger ek açıklamaları için web uygulaması tüm sınıfları tarar . Ürün ayrıca otomatik olarak web uygulaması dağıtım veya devreye alma sırasında karşılık gelen bir Swagger belgesi üretir.

Bir şey mi eksik?

Şerefe!

James

+0

Ayrıca ... Yeni Liberty beta işlevselliği JAX-RS bu denenmiş 1.1/2.0 ve Swagger açıklama destek Şimdi JAX-RS ve Swagger açıklamalarından yapılan Swagger tanımlarının otomatik oluşturmayı desteklemek! Bu çok önemli bir özelliktir, çünkü belgelerin kodun kendisinden geldiği ünlü aşağıdan yukarıya gelişimi destekler. Sadece apiDiscovery-1.0'ı etkinleştirin, JAX-RS uygulamanızı dropins dizinine bırakın (jaxrs-1.1 veya jaxrs-2.0 etkinken) ve API'larınızın içeride/ibm/api/explorer içinde görünmesini bekleyin. https://developer.ibm .com/wasdev/blog/2016/02/17/exposing-liberty-rest-apis-swagger/ – James

+0

Sürüm: defaultServer'ı başlatma (WebSphere Application Server 2016.3.0.0/wlp-1.0.12.20160305-0200) – James

cevap

0

Sorun çözüldü ...

ben bunu yapıyordum ben 2 sorunları olduğunu görünüyor ..

@POST @Path("/widget/{name}") 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
public Response createWidget( @Context HttpServletRequest request, String bodyText) 

{name} PathParam olarak kullanılmamıştır. Sanırım bir kere oldu :-) 2 yerde vardı. Kayıtta görünür .. sadece hemen değil. Sabit ve mükemmel çalıştı.

James

0

Eğer server.xml "webModuleDoc" özelliğini kullanmaya gerek yoktur JAX-RS ek notunuz varsa. Bu özellik, önceden oluşturulmuş swagger.json veya swagger.yaml dosyanızın, uygulamanızın içinde (/swagger.json gibi) başka bir konumda veya belge deposu gibi uzak bir URL'de bulunduğu durumlar içindir.

Yani ek açıklamalarınız varsa, webModuleDoc'a gerek kalmadan otomatik olarak tamamlanır.

aşağıdaki günlük spec biz mühendislik uygulamalarında her biri için oluşturulan havalı belge ortaya çıkaracaktır:

yaygın bir kullanım hata aynı jaxrs uygulama içinde aynı isimde 2 yöntem sahip
<logging traceSpecification="RESTAPIDiscovery=finest"/> 

. Swagger modeline göre, Liberty yöntem isimlerini operasyon kimlikleri olarak kullanır, bu yüzden benzersiz olmaları gerekir.

+0

için teşekkürler yanıt ... Takdir edildi – James

+0

@ArthurDM aynı ad politikası olan 2 yöntem JAX-RS Kaynakları için kullanılan uygulanan arabirimleri içerir? – austinbruch

+1

@austinbruch, Liberty'nin son sürümü (16004 veya son Beta sürücülerinden herhangi biri) artık bu sınırlamaya sahip değil, dolayısıyla aynı ada sahip yöntemlere sahip olabilirsiniz. – ArthurDM