2011-01-30 74 views
5

我希望客户端和服务器应用程序使用REST服务彼此交谈。我一直在试图用Spring MVC来设计它。我期待这样的事情:如何设计Spring MVC REST服务?

  1. 客户端执行POST休息服务呼叫saveEmployee(employeeDTO, companyDTO)
  2. 服务器已在其控制saveEmployee(employeeDTO, companyDTO)

类似的POST方法可以这样使用Spring MVC做了什么?

+1

这里看起来像一个很好的例子:http://www.stupidjavatricks.com/?p=54 – bwobbones 2011-01-30 07:24:42

+1

@bwobbones,则应将您的评论的答案;) – 2011-01-30 07:29:59

+3

@RC,不想声称别人的工作... – bwobbones 2011-03-21 13:32:55

回答

13

是的,这可以完成。下面是一个简单的例子(与Spring注解)一个RESTful控制器:

@Controller 
@RequestMapping("/someresource") 
public class SomeController 
{ 
    @Autowired SomeService someService; 

    @RequestMapping(value="/{id}", method=RequestMethod.GET) 
    public String getResource(Model model, @PathVariable Integer id) 
    { 
     //get resource via someService and return to view 
    } 

    @RequestMapping(method=RequestMethod.POST) 
    public String saveResource(Model model, SomeResource someREsource) 
    { 
     //store resource via someService and return to view 
    } 

    @RequestMapping(value="/{id}", method=RequestMethod.PUT) 
    public String modifyResource(Model model, @PathVariable Integer id, SomeResource someResource) 
    { 
     //update resource with given identifier and given data via someService and return to view 
    } 

    @RequestMapping(value="/{id}", method=RequestMethod.DELETE) 
    public String deleteResource(Model model, @PathVariable Integer id) 
    { 
     //delete resource with given identifier via someService and return to view 
    } 
} 

注意,有从http请求(@RequestParam,@RequestBody,后参数的自动映射处理输入数据的多种方式一个豆等)。为了更长时间,也许更好的解释和教程,尝试谷歌搜索'rest spring mvc'(不含引号)。

客户端(浏览器)-stuff通常使用JavaScript和AJAX完成,我是一个服务器后端程序员,并且不知道很多关于JavaScript的知识,但是有很多库可用于帮助它,例如看到jQuery

参见: REST in Spring 3 MVC

1

是的,休息是很容易在使用Spring MVC实现。

@RequestMapping(value="/saveEmploee.do",method = RequestMethod.POST) 
@ResponseBody 
public void saveEmployee(@RequestBody Class myclass){ 
    //saving class. 
    //your class should be sent as JSON and will be deserialized by jackson 
    //bean which should be present in your Spring xml.  
}