Ի՞նչ է տարբերությունը RestController և Controller-ի միջև Spring-ում։
sobes.tech AI
Պատասխան AI-ից
@Controller նշում է դասը որպես Spring MVC վերահսկիչ։ Այս դասը սովորաբար վերադարձնում է տեսքի անունները, որոնք ապա մշակվում են տեսքի լուծողներով՝ օգտագործողի ինտերֆեյսը ցուցադրելու համար (օրինակ՝ 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; // Map-ը կվերածվի JSON-ի
}
}