2013-07-04 24 views
7

Yolu yapılandırmak için REST sınıfımda javax.ws.rs.Path sınıfını kullanıyorum. Garip davranıyor ... Benim yapılandırmam şunun gibi bir şey ... Bu gerçek dosyalar değil, ama benim yapılandırmalarımı anlaman için bir çoğaltma gösterdim.@Path yapılandırmasında sınıf düzeyi ve yöntem düzeyi

Sınıf1

@Path("/v2") 
public class BoxResource {   
    @POST 
    @Path("/ie/box") 
    public Response createbox(...) { 
    ... 
    } 
} 

Ders2

@Path("/v2/ie") 
public class BagResource {   
    @POST 
    @Path("/bag") 
    public Response createbag(...) { 
     ... 
    }   
} 

Ben /v2/ie/box gibi bir HTTP isteği, bu sunucu yapılandırma hatası atar. Ama eğer Class2'yi aşağıdaki gibi değiştirirsem, iyi çalışıyor.

@Path("/v2/ie/bag") 
public class BagResource {    
    @POST 
    public Response createbag(...) { 

    } 
} 

Neden sınıf düzeyinde @ yol yapılandırma ve yöntem seviyesi farklıdır .. mu benziyor? isimli bir sınıf ek açıklaması olarak

@Path("/v2/ie") 

çünkü

cevap

13

/v2/ie/box için bir istek Class2 eşleştirilir.

Bu durumda en uzun Path kazanır. Class1, daha kısa sınıf notu @Path("/v2") olduğu için hiç bakılmadı.

Class2'dan beri kalan /box'u eşleyen hiçbir yöntem yoktur, bir 404 Not Found alırsınız.

Öneri

  1. Kullanım @Path ek açıklamalar yöntemleri yalnızca: @Path("/v2/ie/bag") ve @Path("/v2/ie/box")VEYA
  2. kullanım @Path("/bag") ait @Path("/v2/ie") ve yöntem ek not sınıf ek açıklamasıyla bir kaynak sınıf ve @Path("/box").

Düzenleme

Ayrıca bkz bölüm the JAX-RS 2.0 spec ait "Kaynak Yöntemlerine 3.7 Eşleştirme İstekleri".

+0

Değişiklikler yaptıktan sonra, her iki sınıfta da sınıf düzeyi yolunu ("/ v2") yaptım, o zaman bile bana aynı hatayı veriyor –

+0

Lütfen cevabımda bağladığım özellikleri okuyun. Ve lütfen * gerçek * kodunu sorunuza ekleyin. –

+0

Şartnameyi anlamıyorum ... Ve benim box sınıfında yolu/v2/ow/gibi başka yöntemler var .. Bu yüzden bir kaynak yapamazsınız .. Ayrıca üzgünüm gerçek kod ekleyebilir .. Bilgiye ihtiyacınız varsa senaryoyu kullanmamanı önerdiğin –

İlgili konular