Spring MVC Tutorial

Core Spring MVC

Spring MVC - Annotation

Spring MVC - Form Handling

Spring MVC with JSTL

Spring MVC with REST API

Spring MVC with Database

Spring MVC - Get University/College Details via REST API

Fetching university or college details via a REST API in a Spring MVC application involves making requests to an external service, parsing the returned data, and presenting it to the user.

For this guide, let's assume there's an API endpoint, which returns university/college details based on provided parameters. You can use the "Universities API" (https://universities.hipolabs.com/) as an example since it offers open access and doesn't require an API key.

1. Set up Spring Boot with Spring MVC:

Add the necessary dependencies to your pom.xml:

<dependencies>
    <!-- Spring Boot Web Starter for Spring MVC -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!-- For calling REST APIs -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
</dependencies>

2. Create a Service to Fetch University/College Details:

@Service
public class UniversityService {

    @Autowired
    private WebClient.Builder webClientBuilder;

    public List<Map<String, Object>> getUniversityDetails(String country) {
        String apiUrl = "https://universities.hipolabs.com/search?country=" + country;

        // Fetch university details
        List<Map<String, Object>> response = webClientBuilder.build()
            .get()
            .uri(apiUrl)
            .retrieve()
            .bodyToMono(List.class)
            .block();

        return response;
    }
}

3. Create a Controller:

@Controller
@RequestMapping("/university-details")
public class UniversityController {

    @Autowired
    private UniversityService universityService;

    @GetMapping
    public String getSearchForm() {
        return "searchForm";  // Return your form view
    }

    @PostMapping
    public String fetchUniversityDetails(@RequestParam String country, Model model) {
        List<Map<String, Object>> details = universityService.getUniversityDetails(country);
        model.addAttribute("universities", details);
        return "resultView";  // Return your result view
    }
}

4. Create Views (e.g., with Thymeleaf):

searchForm.html:

<form action="/university-details" method="post">
    Country: <input type="text" name="country">
    <input type="submit" value="Search">
</form>

resultView.html:

<h2>Universities:</h2>
<ul>
    <li th:each="university : ${universities}">
        <span th:text="${university['name']}"></span>
    </li>
</ul>

5. Run & Test:

Now, run your Spring Boot application and navigate to /university-details. Enter a country name to get a list of universities from that country.

Note: Always check the documentation of the API you're using. Ensure your application respects any request rate limits, terms of use, or other constraints. Also, handle potential errors gracefully, such as when the API is down or the provided country doesn't match any results.

  1. Spring MVC University Details REST API Example:

    • Description: This is a basic example illustrating how to use a REST API to fetch university details in a Spring MVC application. It typically involves making a request to an external university details API.

    • Code Snippet: (Controller Method with RestTemplate)

      @Controller
      public class UniversityDetailsController {
          @GetMapping("/getUniversityDetails")
          @ResponseBody
          public String getUniversityDetails(@RequestParam("universityName") String universityName) {
              // Use RestTemplate to make a request to the university details API
              // Parse the response and return university details
              return "Details for " + universityName + ": Located in City X, Established in 19XX";
          }
      }
      
  2. Using REST API to Get University Information in Spring MVC:

    • Description: This example extends the basic university details example by using a specific REST API to get live university information.

    • Code Snippet: (Controller Method with University Details API)

      @Controller
      public class UniversityDetailsController {
          @GetMapping("/getUniversityDetails")
          @ResponseBody
          public String getUniversityDetails(@RequestParam("universityName") String universityName) {
              // Use RestTemplate to make a request to a university details API
              // Parse the response and return university details
              return "Details for " + universityName + ": Located in City Y, Established in 20XX";
          }
      }
      
  3. Consuming University Details API in Spring MVC:

    • Description: This example focuses on the client-side of consuming an external university details API using Spring's RestTemplate.

    • Code Snippet: (RestTemplate Usage)

      RestTemplate restTemplate = new RestTemplate();
      ResponseEntity<String> response = restTemplate.getForEntity("https://api.universitydetailsapi.com/details?name=ABC", String.class);
      String universityDetails = response.getBody();
      
  4. RESTful University Details Endpoint in Spring MVC:

    • Description: This example demonstrates creating a RESTful endpoint in Spring MVC that provides university details based on a given name.

    • Code Snippet: (RestController)

      @RestController
      public class UniversityDetailsRestController {
          @GetMapping("/api/universityDetails")
          public ResponseEntity<String> getUniversityDetails(@RequestParam("universityName") String universityName) {
              // Logic to fetch and return university details
              return ResponseEntity.ok("Details for " + universityName + ": Located in City Z, Established in 20YY");
          }
      }
      
  5. Retrieving University Details with Spring RestTemplate:

    • Description: This example showcases the usage of RestTemplate to retrieve university details from an external API in a Spring MVC application.

    • Code Snippet: (Service Class)

      public class UniversityDetailsService {
          private final String universityApiUrl = "https://api.universitydetailsapi.com/details?name=ABC";
      
          public String getUniversityDetails() {
              RestTemplate restTemplate = new RestTemplate();
              ResponseEntity<String> response = restTemplate.getForEntity(universityApiUrl, String.class);
              return response.getBody();
          }
      }
      
  6. Spring MVC University Information Display:

    • Description: This example involves displaying university information retrieved from an external API in a Spring MVC application.

    • Code Snippet: (Controller Method)

      @Controller
      public class UniversityDisplayController {
          @Autowired
          private UniversityDetailsService universityDetailsService;
      
          @GetMapping("/displayUniversityInfo")
          public String displayUniversityInfo(Model model) {
              String universityDetails = universityDetailsService.getUniversityDetails();
              // Process university details and return result
              model.addAttribute("result", universityDetails);
              return "universityInfoDisplay";
          }
      }
      
  7. External API Integration for University Details in Spring MVC:

    • Description: This example illustrates the integration of an external university details API into a Spring MVC application.

    • Code Snippet: (Service Integration)

      public class UniversityDetailsService {
          private final String universityApiUrl = "https://api.universitydetailsapi.com/details?name=ABC";
      
          public String getUniversityDetails() {
              RestTemplate restTemplate = new RestTemplate();
              ResponseEntity<String> response = restTemplate.getForEntity(universityApiUrl, String.class);
              return response.getBody();
          }
      }
      
  8. Fetching Real-Time University Data in Spring MVC:

    • Description: This example focuses on fetching real-time university data from an external API and displaying it in a Spring MVC application.

    • Code Snippet: (Controller Method)

      @Controller
      public class UniversityDisplayController {
          @Autowired
          private UniversityDetailsService universityDetailsService;
      
          @GetMapping("/realTimeUniversityData")
          public String showRealTimeUniversityData(Model model) {
              String universityDetails = universityDetailsService.getUniversityDetails();
              // Process university details and return result
              model.addAttribute("result", universityDetails);
              return "universityDetails";
          }
      }
      
  9. Building a University Information Service with Spring MVC and REST:

    • Description: This example combines the features of a university information service with real-time university details obtained from an external REST API.

    • Code Snippet: (University Details Controller)

      @Controller
      public class UniversityDetailsController {
          @Autowired
          private UniversityDetailsService universityDetailsService;
      
          @GetMapping("/universityInfoService")
          public String showUniversityInfoService(Model model) {
              String universityDetails = universityDetailsService.getUniversityDetails();
              // Process university details and return result
              model.addAttribute("result", universityDetails);
              return "universityInfoServiceResult";
          }
      }