发表于: 2020-06-26 22:32:00
1 1496
今天作为
提交任务一的代码。
了解java接口,RESTful的一些概念。
网络应用程序,分为前端和后端两个部分。那么在前端和后端之间就必然存在着通信,因此API架构诞生了。目前RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。
URI和URL。一个是统一资源标志符,一个是统一资源定位符。
URI只代表资源的实体,不代表它的形式。
Representational State Transfer 表现层状态转化( 资源定位及资源操作) 。
表象层面说就是通过get,post,put,delete方式来实现前后台通信的一种轻量级,跨平台,跨语言架构设计风格的web服务。
http不仅仅是传输协议,更是一种应用协议。REST,即Representational State Transfer的缩写。意为是"表现层状态转化"。RESTful表示一种风格,理解REST前需要理解资源,何谓资源,广义的资源是指可以操作的所有对象。可能是一个系统资源,如txt、jgp、xml …,亦可以是诸如自己定义的虚拟集合的抽象,如books、usrs、times。RESTfutl代表一种简洁、方便、快捷、高效、透明的架构,这取决于你怎样组合。具有如下特点:
1、规范化接口访问方式。这些http操作方法包括GET/POST/PUT/DELETE/OPTIONS等,每个操作方法都代表一个相同意义的操作,它向所有人透明地表明操作方式。比如GET只能读取/拉数据,当然你也可以是添加数据,但建议不要这么做,不然这样就失去了REST的意义。
GET 读取
POST 添加
PUT 修改
DELETE 删除
2、资源标识唯一。通过URI表示一个资源名称,形式/resource/patch。如/users,表示用户的组合,或用户群。当然还可以继续标识某个具体的一个用户,/users/11,表示id为11的用户。当然,你也可以又用一组/usrgroup/11的URI代表操作用户组,不过不建议这么做,因为这样从字面上重复了/users/11资源表示的内容。一个资源URI总是包含第一条实现的方法:
GET /users/11
POST /users/11
PUT /users/11
DELETE /users/11
当然,仅有这些还不足以包括资源操作的所有需求,所以还可以包含请求参数,如GET /users?type=list&page=1。
3、状态的转化。这就是REST的真实含义,指它允许资源URI具有不同的表现形式。同一个URI,根据不同请求方式,执行的动作不同;还可以根据请求的Header Accept的不同返回不同的结果,如text/html、text/css、text/xml等等。也可以理解为body不同。如查询快递一般,可以上次查询,物品还在仓库,而过一段时间已经在路上了。它表示的是一个互动过程。
4、所有信息都包含在当前请求中。请求的方式包含在 Request Header的Method中,还可以包含Accept、Accept-Encoding、Accept-Language,使用Authentication、Cookie等信息表明身份。同样,服务端通过发送Content-Length、Content-Type响应执行情况。最重要的是,需要返回Status Code通知执行状态,如200 201 400 404 500等http code。REST认为,所有信息都能通过请求一次性发送,而不必再采用方式保存状态,请求的信息本身已经说明了请求的意义。
5、无状态性。这是REST最重要的特性之一,这个状态指的是客户端与服务端无需为每次保存请求状态,客户端请求不必考虑当前状态,不必考虑上下文。具体上说,就是不必使用session等工具跟踪、保存请求的特殊性。比如,无论是谁,从哪里发送,几时发送,对同一个URI资源发送请求的结果都是一样的。据传,这样的设计是为当一台服务器宕机时,另一台服务器可以无差别地响应对方的请求。客户端请求只认URI,而不需理后台的设计。
HTTP协议
完整的URL地址:schema://host[:post]/path[?query-string][#anchor]
scheme:指定底层使用的协议,例如:http,https,ftp
host:服务器的IP地址或者域名
port:服务器端口,默认为80
path:访问资源的路径
query-string:发送给http服务器的数据
anchor:锚(定义页面特定章节位置)
请求的组成格式:请求行、消息报头、请求正文
请求行:Method Request-RUI HTTP-Version CRLF
例如:GET/HTTP/1.1 CRLF (CRLF回车或换行符)
请求方式
GET:请求获取Request-URI所标识的资源
POST:在Request-URI所标识的资源后附加新的数据
HEAD:请求获取由Request-URI所标识的资源的响应消息报头
PUT:请求服务器存储一个资源,并用Request-URI作为其标识
DELETE:请求服务器删除Request-URI所标识的资源
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求
响应组成格式:状态行、消息报头、响应正文
状态行:HTTP-Version Status-Code Reason-Phrase CRLF
例如:HTTP/1.1 200 OK
常用状态码:
200 OK 客户端请求成功
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized 服务器收到请求,但是拒绝提供服务。需要授权的资源
404 Not Found 请求资源不存在
500 Internal Server Error 服务器发生不可预期的错误
503 Server Unavailable 服务器当前不能处理客户端请求
明天计划的事情:
1.查看接口定义格式,分别给出CRUD的接口文档
2.创建Maven WEB工程
3.根据接口文档,使用Spring Rest 编写对应的Controller,日志记录接收参数后,暂时不用写业务逻辑,直接返回JSP,直接用Json Tag-lib 生成假数据
4.本地运行Jetty:run 插件,修改端口号为8080,浏览器访问任意查询接口,判断是否可以正确返回数据
5.用Postman或者dhc测试接口文档,返回数据是否成功。
遇到的问题:关于接口,RESTFul的概念还没理清楚。
收获:在IDEA使用git上传代码到github
打开设置搜索git
直接点击commit上传到本地仓库
点击put上传到github
评论