2016-01-13 9 views
8

नीचे मेरीRestlet पथ परम

public Restlet createInboundRoot(){ 
Router router = new Router(getContext()); 
router.attach("account/profile",UserProfile.class); 

मार्ग है के बाद काम नहीं करता संसाधन वर्ग UserProfile.java

@post 
@path("add") 
public void addUser(User user){ 

@post 
@path("modify") 
public void modifyUser(User user){ 

@post 
public void test(){//only this is called 

मैं एक संसाधन वर्ग आह्वान करने के लिए करना चाहते हैं और एक के लिए समान कार्य के जोड़े को करना है संसाधन वर्ग इसका मतलब है, मेरा उपरोक्त संसाधन वर्ग उपयोगकर्ताप्रोफाइल से संबंधित कार्यों को संभालता है जैसे कि जोड़ें, संशोधित करें। यूआरएल हैं:
खाता/प्रोफ़ाइल/जोड़ने = एक उपयोगकर्ता
खाता/प्रोफ़ाइल जोड़ने के लिए>/संशोधित =>

वैसे भी एक उपयोगकर्ता को संशोधित करने, ऊपर मेरी कार्यान्वयन के रूप में केवल परीक्षण काम नहीं करता है() विधि खाते/प्रोफाइल/

के माध्यम से भी बुलाया जा सकता है मैंने पथपैम के साथ भी कोशिश की। लेकिन यह भी काम नहीं करता था। पथ के लिए पैरामीटर:

router.attach("account/profile/{action}",UserProfile.class); 

जोड़ा गया था और संसाधन कक्षा में,

@post 
@path("{action}") 
public void addUser(@pathparam("action") String action, User user){ 

किसी को भी मुझे बता जहां मेरी समस्या है।

+0

आप अपनी गलती लॉग यहाँ पोस्ट कर सकते हैं? –

+0

ध्यान के लिए धन्यवाद करथी। कोई त्रुटि फेंक नहीं है .. सर्वर प्रतिक्रिया के रूप में 403 देता है –

+0

अच्छा! इसका अर्थ यह है कि जिस संसाधन को आप एक्सेस करने का प्रयास कर रहे हैं वह मौजूद है लेकिन सर्वर उचित प्रतिक्रिया देने में असमर्थ है। आप इन चीजों को आजमा सकते हैं, सुनिश्चित करें कि निर्देशिका में सभी अनुमतियां हैं और @ प्रोड्यूस एनोटेशन का उपयोग करके या तो जेसन या एक्सएमएल का उत्पादन प्रकार निर्दिष्ट करें और @put या @ विधियों के साथ प्रयास करें। कभी-कभी पोस्ट अपराधी है। –

उत्तर

0

जिस तरह से आप अपना UserProfile सर्वर संसाधन संलग्न करते हैं, वह थोड़ा अजीब है। मुझे लगता है कि आपने रीस्टलेट की मूल रूटिंग और जेएक्सआरएस एक्सटेंशन में से एक को मिश्रित किया है।

मैंने आपके उपयोग के मामले के बारे में कुछ परीक्षण किए हैं और मैं आपके द्वारा अपेक्षित व्यवहार करने में सक्षम था। मैंने रेस्टलेट के संस्करण 2.3.5 का उपयोग किया।

यहाँ मैं क्या किया है:

Component component = new Component(); 
component.getServers().add(Protocol.HTTP, 8182); 

    // JAXRS application 
    JaxRsApplication application 
     = new JaxRsApplication(component.getContext()); 
    application.add(new MyApplication()); 

    // Attachment 
    component.getDefaultHost().attachDefault(application); 

    // Start 
    component.start(); 
  • आवेदन बस सूची:

    • आप JAXRS उपयोग करना चाहते हैं के बाद से, आप एक JaxRsApplication बना सकते हैं और घटक पर इसे संलग्न करने की आवश्यकता है सर्वर संसाधन जिन्हें आप उपयोग करना चाहते हैं लेकिन रूटिंग और पथ परिभाषित नहीं करते हैं:

      import javax.ws.rs.core.Application; 
      
      public class MyApplication extends Application { 
          public Set<Class<?>> getClasses() { 
           Set<Class<?>> rrcs = new HashSet<Class<?>>(); 
           rrcs.add(AccountProfileServerResource.class); 
           return rrcs; 
          } 
      } 
      
    • सर्वर संसाधन को परिभाषित करता है से निपटने के तरीकों और संबंधित मार्गों:

      import javax.ws.rs.POST; 
      import javax.ws.rs.Path; 
      
      @Path("account/profile/") 
      public class AccountProfileServerResource { 
          @POST 
          @Path("add") 
          public User addUser(User user) { 
           System.out.println(">> addUser"); 
           return user; 
          } 
      
          @POST 
          @Path("modify") 
          public User modifyUser(User user) { 
           System.out.println(">> modifyUser"); 
           return user; 
          } 
      
          @POST 
          public void test() { 
           System.out.println(">> test"); 
          } 
      } 
      
    • जब मैं अलग अलग रास्तों कहते हैं, सही तरीके कहा जाता है:

      • http://localhost:8182/account/profile/modify: modifyUser विधि
      • http://localhost:8182/account/profile/add कहा जाता है: addUser विधि
      • http://localhost:8182/account/profile/ कहा जाता है: test विधि ca है lled

    आशा है कि यह आप में मदद करता है, थियरी

  • संबंधित मुद्दे