2016-09-04 5 views
0

스프링 프레임 워크를 사용하여 RESTful 웹 서비스를 작성했습니다 (온라인/비디오 자습서 등을 읽음으로써). 그러나 나는 여전히 몇 가지 의구심이 있습니다.스프링 프레임 워크를 사용하여 RESTful 웹 서비스

우리는 스프링 MVC 모듈를 사용하여 웹 응용 프로그램을 작성할 때 우리가 아래에 유사한 컨트롤러 코드를 사용 : 위의 코드에서

@Controller 
public class SimpleController { 

    @RequestMapping("/welcome") 
     ModelAndView handleIncomingWelcomeReq() { 

     ModelAndView mw = new ModelAndView("WelcomePage","welcomeKey","WelcomeKey's value!"); 

     return mw; 
    } 

}

은의 ModelAndView 객체이있다 컨트롤러가 반환되며 다음 URL과 같이 호출 할 수 있습니다.

http://localhost:8080/contextRoot/welcome 

"view"부분을 제외하고 모델 만 반환하면 웹 서비스처럼 작동하지 않습니까?

내 생각에, Spring에서는 웹 애플리케이션 또는 RESTful 웹 서비스를 작성하는 데 동일한 API/jar를 사용 했습니까?

내가 읽은 것들은 Spring REST 지원을 위해, @RestController 주석 (자체는 @Contoller + @ResponseBody 주석과 같음)을 가지고있다.

스프링 프레임 워크에서 REST WS와 웹 애플리케이션의 구현이 다른 점은 무엇입니까?

아무도 이해할 수 있습니까?

+0

나는 왜이 질문이 투표로 결정되었는지 확신하지 못합니다. 나는이 질문을하기 전에 내가했던 숙제를 설명했다. 숙련 된 개발자에게는 순진한 질문 일지 모르지만 초보자에게는 의미가있을 수 있습니다. 이 질문에 대해 다른 내용이 편집 될 것으로 예상되는 경우 기꺼이 도와 드리지만 의심을 분명히하는 데 도움이되도록하십시오. 최고 감사합니다 – CuriousMind

+0

나는 그것이 너무 광범위한 질문이라고 말하고 싶습니다. 나머지는 jax-rs이고 webservices는 jax-ws입니다. –

+0

@ 니콜라스 : 답변 해 주셔서 감사합니다. 제 질문은 RESTful WS에 대한 Spring 프레임 워크 지원에 관한 것입니다. Spring을 사용하여 RESTful WS를 작성한다면 Spring MVC 기반 웹 애플리케이션을 작성하는 데 사용되는 동일한 API를 사용하는지 혼란 스럽습니까? – CuriousMind

답변

0

예, Spring을 사용하여 RestService & 웹 응용 프로그램을 작성할 수 있습니다. @RestController를 사용하여 REST 서비스를 노출하고 @Controller를 웹 애플리케이션 용으로 사용하십시오.

@RestController는 @Controller 및 @ResponseBody가있는 메타 주석입니다. @Controller는 등록 된 ViewResolvers를 검색하지만 @RestController는 검색하지 않습니다.

0
@Controller 
public class SimpleController { 
@RequestMapping("/welcome", method = RequestMethod.GET, produces="application/json") 
    public @ResponseBody JSONObject handleIncomingWelcomeReq() { 
    JSONObject j = new JSONObject(); 
    j.put("welcomeKey", "WelcocmeKey's value!"); 
    return j; 
} 

다음은 대부분 사용자 ID Rest Apis의 응답을 반환하는 코드입니다.

0

@RestController 대신 @Controller를 사용하는 것이 좋습니다. @RestController는보기를 검사하지 않습니다. 따라서 애플리케이션에 자체 뷰가 있고 서비스를 노출해야하는 경우 @ResponseBody 주석과 함께 @Controller를 JSON으로 출력 할 수 있습니다.

또 다른 옵션은 다른 컨트롤러가 요청을 처리하는 RESTful 웹 서비스에 완전히 다른 URL을 사용하는 것입니다. 이러한 다른 컨트롤러에는 @RestController 주석을 달 수 있습니다.