0,应用背景

Rest ful api是  Fielding(楼下那叔叔) 在他的论文《Architectural Styles and the Design of Network-based Software Architectures》中提出的,论文地址:http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm。(。。。)

因为最近在做hybird App,需要调用使用Sping mvc发布的接口,就想尝试一下新的接口形式,希望能规范下接口开发,方便调用,具体都有什么好效果,再议。

二,REST ful 基本概念

REST:Representational State Transfer,即表现层状态转换。在网络上,我们通过URI定位资源,之后将资源呈现出来的具体形式叫做它的“表现层”。

理解状态转换:

三,URI的潜规则

在REST ful API设计中,客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化",所以,可以看出我们对每一个URL中代表的资源操作都放在了http请求中,所以,在URL中,不应该再包含有动词。

代表资源的URI应该只包含名词。

四,常用HTTP动词

五,关于前端和后台的交互实现

前端对于API数据的操作放在了我们AngularJs的service模块中,通过$resource来访问我们的API接口,实现对数据的CRUD操作,其实感觉跟我们JQ中的AJAX是差不多的,但是实现起来当然还有一些小细节要注意。

在后台,主要是在Spring Mvc的Controller中,对于方法,我们建议返回JSON数据,通过@ResponseBody注解标注方法,并引入JackJson的Jar包,在spring mvc的配置文件中加入可返回JSON的配置。(根据Spring MVC  的版本而定,如下,为了分离前后台开发,接口对接完成之后,又后台先快速开发一套假数据的项目,快速部署,方便前端调用)。

@Controller
@RequestMapping("/curriculumschedule")
public class GetDataController {/*测试发布*/@RequestMapping("/mvc")public String helloMvc() {return "home";}/*登陆接口*/@ResponseBody@RequestMapping(value="/login/userCode/{userCode}/password/{password}",method=RequestMethod.GET)public String login(@PathVariable("userCode") String userCode,@PathVariable("password") String password,HttpServletResponse response){response.setHeader("Access-Control-Allow-Origin", "*"); //允许哪些url可以跨域请求到本域System.out.println("用户名为:"+userCode);System.out.println("密码为:"+password);return "{\"result\":true,\"allUsers\":{\"id\":\"12EBA23Qsew345\",\"userName\":\"二牛\",\"userCode\":\"1016685862\",\"password\":\"1\",\"headImage\":\"img/01.jpg\",\"roleType\":0}}";}/*查询今日课表*/@ResponseBody@RequestMapping(value="/todayLession/studentCode/{studentCode}",method=RequestMethod.GET)public String todayLession(@PathVariable("studentCode") String studentCode,HttpServletResponse response){response.setHeader("Access-Control-Allow-Origin", "*"); //允许哪些url可以跨域请求到本域System.out.println("学生code为:"+studentCode);return "{\"result\":true,\"DayCourse\":[{\"startTime\":\"08:00\",\"endTime\":\"10:00\",\"courseName\":\"高等数学\",\"teacherName\":\"王玉兰\",\"roomName\":\"11教501\"},{\"startTime\":\"10:00\",\"endTime\":\"12:00\",\"courseName\":\"英语\",\"teacherName\":\"杨兰\",\"roomName\":\"12教224\"},{\"startTime\":\"14:00\",\"endTime\":\"16:00\",\"courseName\":\"人体解剖学\",\"teacherName\":\"高峰\",\"roomName\":\"10教104\"},{\"startTime\":\"16:00\",\"endTime\":\"18:00\",\"courseName\":\"生物科学\",\"teacherName\":\"刘二\",\"roomName\":\"6教302\"}]}";}/*查询本周课表*/@ResponseBody@RequestMapping(value="/weekLession/studentCode/{studentCode}",method=RequestMethod.GET)public String weekLession(@PathVariable("studentCode") String studentCode,HttpServletResponse response){response.setHeader("Access-Control-Allow-Origin", "*"); //允许哪些url可以跨域请求到本域System.out.println("学生code为:"+studentCode);return "{\"result\":true,\"ItemWeekIndex\":\"第二周\",\"Content\":[{\"weekIndex\":1,\"courseInfo\":\"11教501高等数学\",\"periodTimesIndex\":1},{\"weekIndex\":6,\"courseInfo\":\"11教232大学英语(一)\",\"periodTimesIndex\":2},{\"weekIndex\":7,\"courseInfo\":\"11教232食品安全学\",\"periodTimesIndex\":4},{\"weekIndex\":2,\"courseInfo\":\"11教232乳制品工艺学\",\"periodTimesIndex\":1},{\"weekIndex\":2,\"courseInfo\":\"11教232大学英语(二)\",\"periodTimesIndex\":2},{\"weekIndex\":2,\"courseInfo\":\"11教232计算机基础(一)\",\"periodTimesIndex\":4},{\"weekIndex\":3,\"courseInfo\":\"11教234人体解剖学\",\"periodTimesIndex\":2},{\"weekIndex\":3,\"courseInfo\":\"11教234植物资源学\",\"periodTimesIndex\":3},{\"weekIndex\":3,\"courseInfo\":\"11教234花卉栽培技术\",\"periodTimesIndex\":4},{\"weekIndex\":4,\"courseInfo\":\"11教234植物衰老生物学\",\"periodTimesIndex\":2},{\"weekIndex\":5,\"courseInfo\":\"11教234文献检索\",\"periodTimesIndex\":3}]}";}

关于移动端和后台开发的分离,也可以使用野狗模拟的假数据,替代了使用本地JSON的形式。前段时间看NodeJs的时候,发现NodeJS里面有个模块faker,也有这方面的效果,但是还木有具体尝试,但是使用NodeJS进行开发也能做到两端分离开发。等有时间了再研究下,有用过的大神们可以留个言。

Rest ful API的一些基本概念相关推荐

  1. vue脚手架_基础API、Vue基本概念、vue-cli 脚手架、vue指令

    vue脚手架_基础API 安装:vue-devtools 学习和调试vue必备之利器 - 官方插件 安装: 打开Chrome浏览器 =>点击浏览器右上角小图标,按图示操作 2.进入扩展程序菜单 ...

  2. vue3 组合式API与响应性的概念理解和简析

    目录 1. 组合式API简介 1.1. 组合式API是为了实现关注点抽离 1.1.1. 什么是关注点? 1.1.2. 为什么需要关注点抽离? 1.1.3. 组合式API是为了实现关注点抽离 2. 组合 ...

  3. OData API 和 Restful API 这两个概念的区别和联系

    我们在 SAP API Business Hub 里能看到 OData,SOAP 和 Restful 三种"不同"类型的 API: 它们之间到底有什么区别和联系? OData vs ...

  4. SpringMVC REST ful API

    REST API 作为异构系统集成的终极解决方案,导致各个框架都实现了对REST API 的支持.SpringMVC在业内名声不小,自然少不了对REST API的支持.今天研究了一下SpringMVC ...

  5. REST ful API优缺点

    优点: 1.适合开放性高的API.这几年的由于移动互联网流行使得前端设备多样化,业界急需一种统一的机制来规范API设计,使得API适用于各种各样的前端设备,REST符合这种需求. 2.行为和资源分离, ...

  6. 1.18.Table API SQL(概念、依赖图、Table程序依赖、扩展依赖)

    1.18.Table API & SQL 1.18.1.概念 1.18.1.1.依赖图 1.18.1.2.Table程序依赖 1.18.1.3.扩展依赖 1.18.Table API & ...

  7. 简述使用REST API 的最佳实践

    Facebook,Google,Github,Netflix,Amazon和Twitter等许多巨头都拥有自己的REST(ful)API,您可以访问它们来获取甚至写入数据. 但是,为什么所有都需要RE ...

  8. [nova]nova api执行过程分析

    新手,水平较低,很多地方还不是很理解,错漏在所难免,后续会慢慢完善的. 我总结了一下,想要通过读懂源代码来学习一个新技术,大概可以分为三个步骤走: 1.理解相关的类库的功能及使用. 2.理清代码中对象 ...

  9. 微服务架构之「 API网关 」

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 在微服务架构的系列文章中,前面已经通过文章<架构设计之「服务注册 」>介绍过了服务注 ...

最新文章

  1. 《梦断代码》读书笔记
  2. IM实现联系人及联系人分组的数据库设计
  3. ES6新特性_ES6迭代器应用-自定义遍历数据---JavaScript_ECMAScript_ES6-ES11新特性工作笔记019
  4. 勒索软件好多都使用恶意LNK链接文件欺骗用户 来看趋势科技分析新型LNK-PowerShell攻击...
  5. 二维分类教案_二维分类大班教案
  6. 二叉树遍历结果推二叉树_二叉树遍历(PreOrder,InOrder,PostOrder)
  7. 如何实现实时文本过滤
  8. SpringCloud观后感
  9. 23.卷1(套接字联网API)---高级SCTP套接字编程
  10. Unity 基础 之 特殊文件夹
  11. 2022电子邮箱大全,国内企业邮箱注册大全有哪些?
  12. CampusBulider(模模搭)学习笔记6:室内搭建
  13. 一文带你了解影响因子IF和SCI分区
  14. sdn 华硕二级路由_Mesh分布式路由器,能否改善全屋WiFi信号覆盖问题,路由组网分享...
  15. 通信算法之六十:SC_FDE系统的物理层算法设计与工程实现
  16. 自动化系2023挑战杯预审相关资料
  17. Qt 软件开发框架(详细版)
  18. 2021-10-21 markdown模板
  19. SyntaxError: invalid syntax(遇到问题)(已解决)
  20. webdriver.Chrome.set_network_conditions:Chrome网络仿真设置。

热门文章

  1. 新南威尔士大学计算机排名,新南威尔士大学世界排名及专业排名汇总(QS世界大学排名版)...
  2. 中国古代神器 兵器详解
  3. Oracle ASM的AU(Allocation units)分配
  4. 【2012级新生请猛击】NEW COMER FIRST BLOOD 完全题解及代码
  5. 开源的 智能卡 COS系统源码
  6. 无锡seo揭秘2017年百度核心算法(内部资源)
  7. 住世觅菩提:福山论犯罪、家庭、信任
  8. mac下给文件夹授权 增加权限
  9. 电脑系统管理员权限怎么设置为超级管理员权限
  10. EKS自动扩容-方式一:ASG负载检测自动扩容功能