खोज…


पैरामीटर

टिप्पणी स्तंभ
@Controller इंगित करता है कि एक एनोटेट वर्ग एक "नियंत्रक" (वेब नियंत्रक) है।
@RequestMapping विशिष्ट हैंडलर क्लासेस (यदि हम क्लास के साथ उपयोग करते हैं) और / या हैंडलर विधियों (यदि हम विधियों के माध्यम से उपयोग करते हैं) पर वेब अनुरोधों की मैपिंग के लिए एनोटेशन।
विधि = RequestMethod.GET HTTP अनुरोध विधियों का प्रकार
ResponseBody एनोटेशन जो एक विधि वापसी मूल्य को इंगित करता है, उसे वेब प्रतिक्रिया बॉडी के लिए बाध्य होना चाहिए
@RestController @ कंट्रोलर + रिस्पांसबॉडी
@ResponseEntity HttpEntity का विस्तार जो एक HttpStatus स्टेटस कोड जोड़ता है, हम रिटर्न http कोड को नियंत्रित कर सकते हैं

REST-Service बनाना

  1. एसटीएस (स्प्रिंग स्टार्टर प्रोजेक्ट) या स्प्रिंग इनिरिज़्र ( https://start.spring.io पर ) का उपयोग करके प्रोजेक्ट बनाएं।
  2. अपने pom.xml में एक वेब निर्भरता जोड़ें:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

या Search for dependencies खोज बॉक्स में Search for dependencies में वेब टाइप करें, वेब निर्भरता जोड़ें और ज़िप्ड प्रोजेक्ट डाउनलोड करें।

  1. एक डोमेन वर्ग बनाएँ (यानी उपयोगकर्ता)
 public class User {
    
        private Long id;
    
        private String userName;
    
        private String password;
    
        private String email;
    
        private String firstName;
    
        private String lastName;
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public String getFirstName() {
            return firstName;
        }
    
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
    
        public String getLastName() {
            return lastName;
        }
    
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
    
        @Override
        public String toString() {
            return "User [id=" + id + ", userName=" + userName + ", password=" + password + ", email=" + email
                    + ", firstName=" + firstName + ", lastName=" + lastName + "]";
        }
    
        public User(Long id, String userName, String password, String email, String firstName, String lastName) {
            super();
            this.id = id;
            this.userName = userName;
            this.password = password;
            this.email = email;
            this.firstName = firstName;
            this.lastName = lastName;
        }
    
        public User() {}
    }
  1. UserController क्लास बनाएँ और @Controller , @RequestMapping एनोटेशन जोड़ें
    @Controller
    @RequestMapping(value = "api")
    public class UserController {
    }
  1. डेटाबेस की नकल करने और सूची में 2 उपयोगकर्ताओं को जोड़ने के लिए स्थिर सूची उपयोगकर्ताओं के चर को परिभाषित करें
    private static List<User> users = new ArrayList<User>();

    public UserController() {
        User u1 = new User(1L, "shijazi", "password", "[email protected]", "Safwan", "Hijazi");
        User u2 = new User(2L, "test", "password", "[email protected]", "test", "test");
        users.add(u1);
        users.add(u2);
    }
  1. सभी उपयोगकर्ताओं को स्थिर सूची में वापस लाने के लिए नई विधि बनाएं (getAllUsers)
    @RequestMapping(value = "users", method = RequestMethod.GET)
    public @ResponseBody List<User> getAllUsers() {
         return users;
    }
  1. एप्लिकेशन चलाएं [ mvn clean install spring-boot:run ] और इस URL को कॉल करें http://localhost:8080/api/users

  2. हम @RestController साथ वर्ग को एनोटेट कर सकते हैं, और इस मामले में हम इस कक्षा में सभी तरीकों से ResponseBody को हटा सकते हैं, (@RestController = @Controller + ResponseBody) , एक और बिंदु अगर हम ResponseEntity उपयोग करते हैं, तो हम रिटर्न http कोड को नियंत्रित कर सकते हैं। हम उसी पिछले कार्यों को लागू करेंगे लेकिन @RestController और ResponseEntity का उपयोग कर

@RestController
@RequestMapping(value = "api2")
public class UserController2 {

    private static List<User> users = new ArrayList<User>();

    public UserController2() {
        User u1 = new User(1L, "shijazi", "password", "[email protected]", "Safwan", "Hijazi");
        User u2 = new User(2L, "test", "password", "[email protected]", "test", "test");
        users.add(u1);
        users.add(u2);
    }
    
    @RequestMapping(value = "users", method = RequestMethod.GET)
    public ResponseEntity<?> getAllUsers() {
       try {
           return new ResponseEntity<>(users, HttpStatus.OK);
       } catch (Exception e) {
           return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
       }
    }
}

अब एप्लिकेशन चलाने और इस URL को कॉल करने का प्रयास करें http: // localhost: 8080 / api2 / उपयोगकर्ता

JERSEY और स्प्रिंग बूट के साथ एक आराम सेवा बनाना

जर्सी रेस्ट सर्विसेज बनाने के लिए उपलब्ध कई रूपरेखाओं में से एक है, यह उदाहरण आपको दिखाएगा कि जर्सी और स्प्रिंग बूट का उपयोग करके रेस्ट सर्विसेज कैसे बनाई जाए

1. इंजेक्शन सेटअप

आप एसटीएस का उपयोग करके या स्प्रिंग इनिरिज़्र पेज का उपयोग करके एक नई परियोजना बना सकते हैं। प्रोजेक्ट बनाते समय, निम्न निर्भरताएँ शामिल करें:

  1. जर्सी (JAX-RS)
  2. वेब

2. एक नियंत्रक का निर्माण

आइए हम अपनी जर्सी वेब सेवा के लिए एक नियंत्रक बनाएँ

@Path("/Welcome")
@Component
public class MyController {
    @GET
    public String welcomeUser(@QueryParam("user") String user){
        return "Welcome "+user;
    }    
}

@Path("/Welcome") एनोटेशन फ्रेमवर्क को इंगित करता है कि इस नियंत्रक को यूआरआई पथ / वेलकम का जवाब देना चाहिए

@QueryParam("user") एनोटेशन फ्रेमवर्क को इंगित करता है कि हम नाम user साथ एक क्वेरी पैरामीटर की उम्मीद कर रहे हैं

3. जर्सी जर्सी विन्यास

अब हम जर्सी बूट को स्प्रिंग बूट के साथ कॉन्फ़िगर करते हैं: एक वर्ग बनाएं, बल्कि एक स्प्रिंग घटक बनाएं जो org.glassfish.jersey.server.ResourceConfig तक विस्तारित org.glassfish.jersey.server.ResourceConfig :

@Component
@ApplicationPath("/MyRestService")
public class JerseyConfig extends ResourceConfig {
    /**
     * Register all the Controller classes in this method 
     * to be available for jersey framework
     */
    public JerseyConfig() {
        register(MyController.class);
    }

}

@ApplicationPath("/MyRestService") उस फ़्रेमवर्क को इंगित करता है जो केवल पथ /MyRestService को दिए गए अनुरोधों को जर्सी फ्रेमवर्क द्वारा नियंत्रित किया जाता है, अन्य अनुरोधों को अभी भी स्प्रिंग फ्रेमवर्क द्वारा जारी रखा जाना चाहिए।

@ApplicationPath साथ कॉन्फ़िगरेशन वर्ग को एनोटेट करना एक अच्छा विचार है, अन्यथा सभी अनुरोधों को जर्सी द्वारा नियंत्रित किया जाएगा और हम इसे बायपास नहीं कर पाएंगे और यदि आवश्यक हो तो एक स्प्रिंग कंट्रोलर को संभालने दें।

4.Done

एप्लिकेशन को प्रारंभ करें और एक नमूना URL को फायर करें जैसे (मान लें कि आपने पोर्ट 8080 पर चलने के लिए स्प्रिंग बूट कॉन्फ़िगर किया है)

http://localhost:8080/MyRestService/Welcome?user=User

आपको अपने ब्राउज़र में एक संदेश देखना चाहिए:

आपका स्वागत है उपयोगकर्ता

और आप स्प्रिंग बूट के साथ अपनी जर्सी वेब सेवा के साथ कर रहे हैं

RestTemplate (GET) के साथ REST API का उपभोग करना

RestTemplate साथ एक REST API का उपभोग करने के लिए, स्प्रिंग बूट RestTemplate साथ एक स्प्रिंग बूट प्रोजेक्ट बनाएँ और सुनिश्चित करें कि वेब निर्भरता जोड़ी गई है:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

एक बार जब आप अपना प्रोजेक्ट सेट कर लेते हैं , तो एक RestTemplate बीन बनाएँ। आप इसे उस मुख्य वर्ग के भीतर कर सकते हैं जो पहले से ही उत्पन्न हो चुका है, या एक अलग विन्यास वर्ग के भीतर ( @Configuration साथ एनोटेट किया गया वर्ग):

@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}

उसके बाद, एक डोमेन वर्ग बनाएं, उसी तरह जैसा कि आपको REST सेवा बनाते समय करना चाहिए।

public class User {
    private Long id;
    private String username;
    private String firstname;
    private String lastname;

    public Long getId() {
        return id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
}

अपने क्लाइंट में, RestTemplate को RestTemplate :

@Autowired
private RestTemplate restTemplate;

किसी एकल उपयोगकर्ता को लौटाने वाली REST API का उपभोग करने के लिए, अब आप इसका उपयोग कर सकते हैं:

String url = "http://example.org/path/to/api";
User response = restTemplate.getForObject(url, User.class);

REST API का उपयोग करना जो उपयोगकर्ताओं की सूची या सरणी लौटा रहा है, आपके पास दो विकल्प हैं। या तो इसे एक सरणी के रूप में उपभोग करें:

String url = "http://example.org/path/to/api";
User[] response = restTemplate.getForObject(url, User[].class);

या ParameterizedTypeReference का उपयोग करके इसका उपभोग करें:

String url = "http://example.org/path/to/api";
ResponseEntity<List<User>> response = restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference<List<User>>() {});
List<User> data = response.getBody();

ज्ञात हो, ParameterizedTypeReference का उपयोग करते समय, आपको अधिक उन्नत RestTemplate.exchange() विधि का उपयोग करना होगा और आपको इसका एक उपवर्ग बनाना होगा। उपरोक्त उदाहरण में, एक अनाम वर्ग का उपयोग किया जाता है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow