2014-10-20 3 views
0

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 작업을 수행하지 않는다는 것입니다.

사실 내가 이것을 쓰는 동안에도 나는 이것이 당신이 의미하는 바가 아니라는 것을 깨닫습니다. 나는 생각하지 않습니다.

답변

0

이것은 실제로 내 웹 응용 프로그램을 처리하는 방법입니다. Person 리소스의 경우 PersonResource REST 표현을 반환하는 PersonRestController을 만들고 에 PersonRestController을 삽입합니다. HTML 컨트롤러의 핸들러 메서드는 REST 컨트롤러를 호출하고 PersonResource (및 기타 관련 특성)을 HTML 템플릿 용 모델에 제공합니다.

+0

감사합니다. 당신이 그 주입 비트를 도울 어딘가에 나를 설명하거나 지적 할 수 있다면 매우 감사 할 것입니다. 나는이 모든 것에 익숙하지 않고 내가 찾는 동안 나는 올바른 용어를 사용하고 있는지 확신하지 못한다. 또한 MockMvc를 사용하여 테스트를 읽었습니다. MockMvc는 내가 찾고있는 것과 비슷한 작업을 수행하는 것 같습니다. 테스트 방법을 사용하는 것이 좋지 않다고 생각합니까? 그냥 생각. – beigerac

+0

REST API가 json 패키지 응답을 리턴하는 것도 관련이 있습니다. – beigerac

+0

@beigerac Spring MVC'@ RestController'는 POJO를 리턴하고, 다른 Spring 빈처럼 컨트롤러에 컨트롤러를 삽입하고 메소드를 호출 할 수있다. – chrylis

관련 문제