RESTful详情

提升自己,想进入大型互联网公司。欢迎关注我的微信公众号  ,搜索微信公众号:"一起写程序" ,会分享系列文章,希望大家能一起学习。

在这里插入图片描述

RESTful?

Resource Representational state transfer. 表现层状态转换,指的是资源的表现层状态转换。

三部分:资源,表现,状态

1resource资源:是一个实体,比如,视频,文本,图片等。

1.1资源的表现形式:uri(统一资源定位符)是资源的定位,不是资源的表现形式。

 

2representational:资源的呈现形式,根据http协议的contentTypeaccept呈现资源。

例如:文本是一个资源:它的表现有 txt,xml,html,json等。图片也是资源:它的表现有 jpg,png等。

 

2.1资源的表现层的表现形式:通过http协议的contentTypeaccept进行指定。

 

3State transfer:资源状态转化,通过post,get,put,delete等改变状态,客户端访问服务器端数据肯定是要发生数据的变化,http协议是无状态协议,所以需要通过某种手段,使得数据发生状态转换,是通过get,post,pust,delete。等手段改变数据状态。

 

3.1,资源的状态转换表现形式:客户端通过http动词,对服务器端资源进行操作,进行“资源状态转化”

 

例子1:通过不同的contentType获得资源的呈现形式。

Book是一个资源,它的表现形式不再url上体现,url只是资源的定位。资源的表现通过contentType表现。

http://localhost:8088/test/book

 

/**
 * 
根据contentType获得资源的不同呈现形式。就是表现层
 */

@RequestMapping("book")
@ResponseBody
public String book(HttpServletRequest httpServletRequest){
    String contentType = httpServletRequest.getContentType()
;
    if
(contentType == null){
       
return "book.defualt";
   
}else if(contentType == "txt"){
       
return "book.txt";
   
}else if(contentType == "html") {
       
return "book.html";
   
}
   
return "book.defualt";
}

 

 

 

 

 

 

资源状态转化:

例子2:资源的状态转换:

http://localhost:8088/test/book/123

/**

 * 1,将变量写在url当中。这样就可以通过不同的id方法我不同资源。

 *,2,一个资源的url是固定的,根据method的不同,更改资源的状态。

 */

@RequestMapping(value="book/{subjectId}",method = RequestMethod.POST)

@ResponseBody

public String subjectPost(@PathVariable("subjectId")String subjectId){

    return "this is get subjectid:"+subjectId;

}

@RequestMapping(value="book/{subjectId}",method = RequestMethod.GET)

@ResponseBody

public String subjectGet(@PathVariable("subjectId")String subjectId){

    return "this is get subjectid:"+subjectId;

}

@RequestMapping(value="book/{subjectId}",method = RequestMethod.PUT)

@ResponseBody

public String subjectPut(@PathVariable("subjectId")String subjectId){

    return "this is get subjectid:"+subjectId;

}

@RequestMapping(value="book/{subjectId}",method = RequestMethod.DELETE)

@ResponseBody

public String subjectDelete(@PathVariable("subjectId")String subjectId){

    return "this is get subjectid:"+subjectId;

}

注意:restful设计的时候,uri不要用动词,因为资源都是静态的。

猜你喜欢

转载自blog.csdn.net/newVenues/article/details/85548519