Rest ful API的一些基本概念

简介: 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。



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进行开发也能做到两端分离开发。等有时间了再研究下,有用过的大神们可以留个言。




             

   

目录
相关文章
|
22天前
|
前端开发 JavaScript API
基于React的简易REST API客户端设计与实现
基于React的简易REST API客户端设计与实现
19 3
|
1月前
|
JSON API 数据库
解释如何在 Python 中实现 Web 服务(RESTful API)。
解释如何在 Python 中实现 Web 服务(RESTful API)。
25 0
|
1月前
|
缓存 安全 测试技术
构建高效的RESTful API:后端开发的实践指南
【2月更文挑战第17天】在数字化转型的浪潮中,RESTful API已成为连接不同软件组件、实现数据交互的核心桥梁。本文将深入探讨如何构建一个高效、可扩展且安全的RESTful API,涉及设计原则、开发流程以及性能优化等关键方面。我们将透过实际案例,展示如何在保证简洁性和灵活性的同时,满足日益增长的业务需求和技术挑战。
|
2月前
|
IDE Java API
使用Java Web技术构建RESTful API的实践指南
使用Java Web技术构建RESTful API的实践指南
|
4天前
|
安全 Java API
RESTful API设计与实现:Java后台开发指南
【4月更文挑战第15天】本文介绍了如何使用Java开发RESTful API,重点是Spring Boot框架和Spring MVC。遵循无状态、统一接口、资源标识和JSON数据格式的设计原则,通过创建控制器处理HTTP请求,如示例中的用户管理操作。此外,文章还提及数据绑定、验证、异常处理和跨域支持。最后,提出了版本控制、安全性、文档测试以及限流和缓存的最佳实践,以确保API的稳定、安全和高效。
|
7天前
|
小程序 前端开发 API
小程序全栈开发中的RESTful API设计
【4月更文挑战第12天】本文探讨了小程序全栈开发中的RESTful API设计,旨在帮助开发者理解和掌握相关技术。RESTful API基于REST架构风格,利用HTTP协议进行数据交互,遵循URI、客户端-服务器架构、无状态通信、标准HTTP方法和资源表述等原则。在小程序开发中,通过资源建模、设计API接口、定义资源表述及实现接口,实现前后端高效分离,提升开发效率和代码质量。小程序前端利用微信API与后端交互,确保数据流通。掌握这些实践将优化小程序全栈开发。
|
16天前
|
前端开发 Java API
构建RESTful API:Java中的RESTful服务开发
【4月更文挑战第3天】本文介绍了在Java环境中构建RESTful API的重要性及方法。遵循REST原则,利用HTTP方法处理资源,实现CRUD操作。在Java中,常用框架如Spring MVC简化了RESTful服务开发,包括定义资源、设计表示层、实现CRUD、考虑安全性、文档和测试。通过Spring MVC示例展示了创建RESTful服务的步骤,强调了其在现代Web服务开发中的关键角色,有助于提升互操作性和用户体验。
构建RESTful API:Java中的RESTful服务开发
|
20天前
|
XML JSON 安全
谈谈你对RESTful API设计的理解和实践。
RESTful API是基于HTTP协议的接口设计,通过URI标识资源,利用GET、POST、PUT、DELETE等方法操作资源。设计注重无状态、一致性、分层、错误处理、版本控制、文档、安全和测试,确保易用、可扩展和安全。例如,`/users/{id}`用于用户管理,使用JSON或XML交换数据,提升系统互操作性和可维护性。
14 4
|
22天前
|
安全 API 开发者
构建高效可扩展的RESTful API服务
在数字化转型的浪潮中,构建一个高效、可扩展且易于维护的后端API服务是企业竞争力的关键。本文将深入探讨如何利用现代后端技术栈实现RESTful API服务的优化,包括代码结构设计、性能调优、安全性强化以及微服务架构的应用。我们将通过实践案例分析,揭示后端开发的最佳实践,帮助开发者提升系统的响应速度和处理能力,同时确保服务的高可用性和安全。
25 3
|
29天前
|
缓存 前端开发 API
构建高效可扩展的RESTful API:后端开发的最佳实践
【2月更文挑战第30天】 在现代Web应用和服务端架构中,RESTful API已成为连接前端与后端、实现服务间通信的重要接口。本文将探讨构建一个高效且可扩展的RESTful API的关键步骤和最佳实践,包括设计原则、性能优化、安全性考虑以及错误处理机制。通过这些实践,开发者可以确保API的健壮性、易用性和未来的可维护性。