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 ይመለከታል
}
}