美文网首页
Spring 搭建REST 后端

Spring 搭建REST 后端

作者: 柳源居士 | 来源:发表于2019-04-06 22:22 被阅读0次

    Rest的英文全称是(Representational status transfer),可以理解为表述性状态转移。
    传统的Spring MVC通过控制器,返回一个ModelAndView对象,包含了模型对象以及视图,sping mvc再通过ViewResolver,来解析视图并渲染数据。
    而Rest主要是针对远程调用的,如移动App的后端,或者前后端分离的应用结构,它的控制器不怎么关心视图,只关心数据类型。

    Rest与传统控制器代码结构极其相似,不同之处在于注解的不同。
    当我们声明一个mvc的控制器时:

    @Controller
    @RequestMapping("/customer")
    public class CustomerController {
        
        private CustomerRepository customerRepository;
    
        @Autowired
        public CustomerController(CustomerRepository customerRepository) {
            this.customerRepository = customerRepository;
        }
    
        @RequestMapping(value="/allCustomer",method = RequestMethod.GET,
                        produces="application/json;charset=UTF-8")
        public List<Customer>  customerList(){
            List<Customer> customerList=customerRepository.findAll();
            if(customerList!=null){
                return customerList;
            }
            return new ArrayList<Customer>();
        }
    
        @RequestMapping(value = "/{name}",method = RequestMethod.GET)
        public List<Customer> customerByName(@PathVariable("name") String name){
            List<Customer> customers=customerRepository.findCustomerByName(name);
            return  customers;
        }
    
        @RequestMapping(value="/addNew",method = RequestMethod.POST,
        consumes = "application/json;charset=UTF-8")
        public Customer addNewCustomer(@RequestBody Customer customer){
            return customerRepository.save(customer);
            
        }
        
    }
    

    普通的Controller返回ModelAndView。
    通过改变注解,可以将它变成Rest的控制器。

    @Controller
    @RequestMapping("/customer")
    public class CustomerController {
       @RequestMapping(value="/allCustomer",method = RequestMethod.GET,
        produces="application/json;charset=UTF-8")
        public @ResponseBody List<Customer>  customerList(){
            List<Customer> customerList=customerRepository.findAll();
            if(customerList!=null){
                return customerList;
            }
            return new ArrayList<Customer>();
        }
    }
    

    通过@ResponseBody ,我们将返回的对象作为资源发给客户端。

    Spring 通过进一步简化注解结构,使用@RestController来完成控制器声明, @RestController本身涵盖了@ResponseBody的含义。这样,控制器的代码就更加简单了。

    @RestController
    @RequestMapping("/customer")
    public class CustomerController {
        
        private CustomerRepository customerRepository;
    
        @Autowired
        public CustomerController(CustomerRepository customerRepository) {
            this.customerRepository = customerRepository;
        }
    
        @RequestMapping(value="/allCustomer",method = RequestMethod.GET,
        produces="application/json;charset=UTF-8")
        public List<Customer>  customerList(){
            List<Customer> customerList=customerRepository.findAll();
            if(customerList!=null){
                return customerList;
            }
            return new ArrayList<Customer>();
        }
    
        @RequestMapping(value = "/{name}",method = RequestMethod.GET)
        public List<Customer> customerByName(@PathVariable("name") String name){
            List<Customer> customers=customerRepository.findCustomerByName(name);
            return  customers;
        }
    
        @RequestMapping(value="/addNew",method = RequestMethod.POST,
        consumes = "application/json;charset=UTF-8")
        public Customer addNewCustomer(@RequestBody Customer customer){
            return customerRepository.save(customer);
            
        }
        
    }
    

    相关文章

      网友评论

          本文标题:Spring 搭建REST 后端

          本文链接:https://www.haomeiwen.com/subject/bwbliqtx.html