EDIT -MVC 컨트롤러 (Spring MVC)에서 REST API 호출하기
이것은 바보 같은 질문입니다. 무시하십시오. Java를 제대로 배우기 위해 떠나십시오.
-
내가 외부에서 사용할 수있는 API를 만들려면,하지만 난 같은 API에 대한 내 자신의 프런트 엔드를 만들려고합니다.
동일한 앱에서 MVC 컨트롤러 & REST 컨트롤러를 만들면 '외부'http 호출을하지 않고도 MVC 컨트롤러에서 REST API를 호출 할 수 있습니까? 조금 비싸지요?
(EDIT - 처음에는 다른 질문에 연결되었지만 잘못되었습니다. 올바른 오른쪽 주소를 찾을 수 없습니다.)
분명히 내가 해야할지 아닌지에 대한 추가 질문을 제기하지만 그것은 주관적입니다. 제쳐두고 저는 그것에 대한 의견을 환영합니다. 나는이 같은 (어딘가 튜토리얼에서 복사 예)
public class Greeting {
private final long id;
private final String content;
public Greeting(long id, String content) {
this.id = id;
this.content = content;
}
public long getId() {
return id;
}
public String getContent() {
return content;
}
}
과 같은 휴식 컨트롤러 클래스를 만드는 경우
편집 2 그래서
(chrylis에 대한 응답으로 몇 가지 코드를 추가하는)하는
@RestController
public class GreetingController {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", required=false, defaultValue="World") String name) {
return new Greeting(counter.incrementAndGet(),
String.format(template, name));
}
}
가 그럼 난 이렇게 내 HTML 컨트롤러에서 호출 :
JSON 데이터를 반환합니다 브라우저에서 직접 호출하는 경우@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
@RequestMapping("/")
public String home(Model model) {
Greeting gr=new Greeting(1,"Hi");
logger.info(gr.getContent());
model.addAttribute("modelName",gr.getContent());
return "home";
}
}
그게 무슨 뜻이야? 작동하는 것 같습니다. 내가 보는 유일한 문제는 클래스에서 직접 작업하고 나머지 API 작업을 수행하지 않는다는 것입니다.
사실 내가 이것을 쓰는 동안에도 나는 이것이 당신이 의미하는 바가 아니라는 것을 깨닫습니다. 나는 생각하지 않습니다.
감사합니다. 당신이 그 주입 비트를 도울 어딘가에 나를 설명하거나 지적 할 수 있다면 매우 감사 할 것입니다. 나는이 모든 것에 익숙하지 않고 내가 찾는 동안 나는 올바른 용어를 사용하고 있는지 확신하지 못한다. 또한 MockMvc를 사용하여 테스트를 읽었습니다. MockMvc는 내가 찾고있는 것과 비슷한 작업을 수행하는 것 같습니다. 테스트 방법을 사용하는 것이 좋지 않다고 생각합니까? 그냥 생각. – beigerac
REST API가 json 패키지 응답을 리턴하는 것도 관련이 있습니다. – beigerac
@beigerac Spring MVC'@ RestController'는 POJO를 리턴하고, 다른 Spring 빈처럼 컨트롤러에 컨트롤러를 삽입하고 메소드를 호출 할 수있다. – chrylis