Rest服务

Posted seven_hu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rest服务相关的知识,希望对你有一定的参考价值。

资源:是网络上的一个实体,或者是网络上的一个具体信息,每一个资源对应一个特定的URI(统一资源定位符),要访问该资源,访问它的URI就可以了。

表现层:把资源的具体形式表现出来。

状态转化:每发出一个请求,就代表客户端和服务器的一次交互过程。HTTP协议,是一个无状态协议,即所有的状态都保存在服务器端,因此客户端想要操作服务器,必须通过某种手段,让服务器发生状态转化。在HTTP协议里面有四种基本操作来实现状态转化:GET用来获取资源、PUT用来更新资源、DELETE用来删除资源、POST用来新建资源。

REST即Representation State Transfer 表现层状态转化。

浏览器form表单只支持GET、POST请求,而DELETE、PUT等method并不支持,Spring3.0添加了一个过滤器,可以将这些请求转化为标准的http方法,使得支持GET、POST、DELETE、PUT,各种用法如下:

package com.seven.demos;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/**
 * Created by hu on 2016/4/2.
 */
@RequestMapping("/SpringMvc")
@Controller
public class SpringMvcTest {
    private final String SUCCESS="success";
    /*
    * 使用@RequestParam绑定请求参数
    * value:参数名
    * required:是否是必须的。默认是true,表示请求参数中必须包含对应的参数,若不存在,抛出异常
    * */
    @RequestMapping("/handle1")
    public String test1(@RequestParam(value = "userName",required = true)String userName,@RequestParam("age")int age){
        return SUCCESS;
    }

    /*
    * 使用@RequestHeader绑定请求报头的属性值
    * 请求头包含了若干属性,服务器可据此获知客户端的信息,通过@RequestHeader即可将请求头中的属性值绑定到处理方法的入参中
    * */
    @RequestMapping("/handle2")
    public String test2(@RequestHeader("Accept-Encoding")String encoding,@RequestHeader("Keep-Alive")long keepAlive){
        return SUCCESS;
    }
    /*
    * 使用@CookieValue绑定请求中的Cookie值
    * */
    @RequestMapping("/handle3")
    public String test3(@CookieValue(value = "sessionId",required = false)String seesionId){
        return SUCCESS;
    }
}

  此外,还可以使用POJO对象绑定请求参数值,SpringMvc会按照参数名和POJO属性名进行自动匹配,自动为该对象填充属性值,并且支持级联属性:

    /*
    * 支持如下的URL
    * .../handle4?name=hu&department.departmentId=123&department.departmentName=Officer
    * */
    @RequestMapping("/handle4")
    public String test4(User user){
        return SUCCESS;
    }

  

    /*
    * 还可以使用Servlet API作为入参
    * */
    @RequestMapping("/hanle5")
    public void test5(HttpServletRequest request,HttpServletResponse response){

    }
    @RequestMapping("/handle6")
    public ModelAndView test6(HttpSession session){
        return null;
    }

  

 

以上是关于Rest服务的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud系列四:Eureka 服务发现框架(定义 Eureka 服务端Eureka 服务信息Eureka 发现管理Eureka 安全配置Eureka-HA(高可用) 机制Eur(代码片段

400错误代码,当使用RestTemplate进行Rest API时。

Django REST framework 基本组件

Django REST framework序列化

rest_framework

Spring REST Docs 1.1.2 发布,bug修复