Sobes.tech
Junior

Фарқи байни RestController ва Controller дар Spring чист?

sobes.tech AI

Ҷавоб аз AI

@Controller ክፍልን እንደ Spring MVC ኮንትሮለር ምልክት ያደርጋል። ይህ ክፍል በአሁኑ ጊዜ የሚመለከቱት የእይታ ስምዎችን ይመለከታል፣ እነዚህም በኋላ በview resolvers ተገናኝተው የተጠቃሚ ቅርጸ ቅርጸ አሳይ ለመሳሰሉት ይተካሉ (ለምሳሌ HTML ገጽታዎች)። @Controller ብዙ ጊዜ ለመፍጠር የአሳይ መተግበሪያዎች ከምርጥ እና ከአገልግሎቶች ጋር ተያይዞ ይጠቀማል።

@RestController ደግሞ የ @Controller ልዩ አይነት ነው። በሁሉም መንገድ ወደ እያንዳንዱ ዘዴ @ResponseBody እንደሚጨምር ራሱ ራሱ ይጨምራል። ይህም ማለት የ @RestController ውስጥ ያሉ ዘዴዎች በመነሻ የመረጃ ማለት እንደ JSON ወይም XML ይመለከታሉ፣ እንደ እይታ ስም አይደሉም። @RestController በ RESTful ድር አገልግሎቶች ለመፍጠር በጣም መገባ ነው፣ እነዚም የደንበኞች (ለምሳሌ ፊት ማቅረብ መተግበሪያዎች ወይም ሌሎች አገልግሎቶች) የመረጃ ማቅረብ ይሰጣሉ።

ዋና ልዩነት:

  • @Controller: የእይታ ስም ይመለከታል።
  • @RestController: የመረጃ ይመለከታል (በራሱ @ResponseBody ይጨምራል)።

@Controller ምሳሌ:

@Controller
public class ViewController {

    @GetMapping("/hello")
    public String sayHello(Model model) {
        model.addAttribute("message", "Hello, world!");
        return "helloView"; // የእይታ ስም ይመለከታል
    }
}

@RestController ምሳሌ:

@RestController
public class DataController {

    @GetMapping("/data")
    public Map<String, String> getData() {
        Map<String, String> response = new HashMap<>();
        response.put("status", "success");
        response.put("message", "Data retrieved");
        return response; // ወደ JSON የሚቀየር  Map ይመለከታል
    }
}