restful

RESTful api设计风格

不打扰是莪最后的温柔 提交于 2020-01-23 23:57:26
简介 REST(Representational State Transfer):表象层状态转变 RESTful对api进行规范和约束,使得api统一规范,增强api的可读性,便于开发。 设计原则 1、每一个URI代表一种资源 2、客户端通过四个HTTP动词(get、post、put、delete),对服务器端资源进行操作 因此,这种风格的接口url中没有动词,而是通过四个HTTP动词(get、post、put、delete)来代表动作。 Http动词 分别对应四种基本操作: GET用来获取资源 POST用来新建资源(也可以用于更新资源) PUT用来更新资源 DELETE用来删除资源 具体实施 版本控制 如github开放平台的API: http:// developer.github.com/v3 / 可以发现,一般的项目加版本v1,v2,v3版本号,为的是兼容一些老版本的接口,这个加版本估计只有大公司大项目才会去使用。 参数命名规范 query parameter可以采用 驼峰 命名法,也可以采用下划线命名的方式,推荐采用 下划线 命名的方式,据说后者比前者的识别度要高,其中,做前端开发基本都后后者,而做服务器接口开发基本用前者。 http://example.com/api/users/today_login 获取今天登陆的用户 http://example.com/api

Spring MVC配置Restful风格URI

不羁岁月 提交于 2020-01-23 09:11:44
在web.xml加入如下内容即可 <!-- 字符编码过滤器,一定要放在所有过滤器之前 --> < filter > < filter-name > CharacterEncodingFilter </ filter-name > < filter-class > org.springframework.web.filter.CharacterEncodingFilter </ filter-class > < init-param > < param-name > encoding </ param-name > < param-value > UTF-8 </ param-value > </ init-param > < init-param > < param-name > forceRequestEncoding </ param-name > < param-value > true </ param-value > </ init-param > < init-param > < param-name > forceResponseEncoding </ param-name > < param-value > true </ param-value > </ init-param > </ filter > < filter-mapping > < filter

Django后端项目----restful framework 认证源码流程

主宰稳场 提交于 2020-01-23 02:04:33
一、请求到来之后,都要先执行dispatch方法,dispatch方法方法根据请求方式的不同触发get/post/put/delete等方法 注意,APIView中的dispatch方法有很多的功能 def dispatch(self, request, *args, **kwargs): """ `.dispatch()` is pretty much the same as Django's regular dispatch, but with extra hooks for startup, finalize, and exception handling. """ self.args = args self.kwargs = kwargs 第一步:对request进行加工(添加数据) request = self.initialize_request(request, *args, **kwargs) self.request = request self.headers = self.default_response_headers # deprecate? try: #第二步: #处理版权信息 #认证 #权限 #请求用户进行访问频率的限制 self.initial(request, *args, **kwargs) # Get the appropriate

RESTful风格

一笑奈何 提交于 2020-01-22 00:04:22
RESTful风格 传统方式 @RequestMapping("/add") public String test1(int a, int b, Model model) { int res = a + b; model.addAttribute("msg", "a + b = " + res); return "test"; } url: http://localhost:8080/r/add?a=5&b=2 页面输出:a + b = 7 RESTful风格 @RequestMapping("/add/{a}/{b}") public String test1(@PathVariable int a, @PathVariable int b, Model model) { int res = a + b; model.addAttribute("msg", "a + b = " + res); return "test"; } url:http://localhost:8080/r/add/5/2 页面输出:a + b = 7 指定方法 //@RequestMapping(value = "/add/{a}/{b}", method = RequestMethod.GET) @GetMapping("/add/{a}/{b}")//效果同上 public String test1

RESTful 架构详解

痴心易碎 提交于 2020-01-21 04:36:16
RESTful 架构详解 分类 编程技术 1. 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。 他在论文中提到:"我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST指的是一组架构约束条件和原则。" 如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。 REST本身并没有创造新的技术、组件或服务,而隐藏在RESTful背后的理念就是使用Web的现有特征和能力, 更好地使用现有Web标准中的一些准则和约束。虽然REST本身受Web技术的影响很深, 但是理论上REST架构风格并不是绑定在HTTP上,只不过目前HTTP是唯一与REST相关的实例。 所以我们这里描述的REST也是通过HTTP实现的REST。 2. 理解RESTful 要理解RESTful架构,需要理解Representational State Transfer这个词组到底是什么意思,它的每一个词都有些什么涵义。 下面我们结合REST原则,围绕资源展开讨论,从资源的定义、获取、表述、关联

RESTful 架构详解

独自空忆成欢 提交于 2020-01-21 04:33:35
1. 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。 他在论文中提到:"我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST指的是一组架构约束条件和原则。" 如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。 REST本身并没有创造新的技术、组件或服务,而隐藏在RESTful背后的理念就是使用Web的现有特征和能力, 更好地使用现有Web标准中的一些准则和约束。虽然REST本身受Web技术的影响很深, 但是理论上REST架构风格并不是绑定在HTTP上,只不过目前HTTP是唯一与REST相关的实例。 所以我们这里描述的REST也是通过HTTP实现的REST。 2. 理解RESTful 要理解RESTful架构,需要理解Representational State Transfer这个词组到底是什么意思,它的每一个词都有些什么涵义。 下面我们结合REST原则,围绕资源展开讨论,从资源的定义、获取、表述、关联、状态变迁等角度,列举一些关键概念并加以解释。

什么是RESTful架构

人盡茶涼 提交于 2020-01-21 00:05:48
要理解REST架构,必须知道的应用背景:“互联网软件”,既现在程序员开发的大多数软件,都是跑在互联网上的,都是基于“服务端/客户端(server/client)”模式的,具有:高延迟、高并发特性。而如何开发在互联网环境中使用的软件(高效的、统一的让客户端访问服务端)就是RESTful架构的目的,它结构清晰、符合标准、易于理解、扩展方便。 到底什么是RESTful架构? REST( Representational State Transfer)的缩写。"表现层状态转化"。如果一个架构符合REST原则,就称它为RESTful架构。REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。 REST描述的是在网络中client和server的一种交互形式(软件怎么在网络中更好的应用);REST本身不实用,实用的是如何设计 RESTful API(REST风格的网络接口); 资源(Resources) REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。 所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI

RESTful API 架构解读

北城以北 提交于 2020-01-20 10:26:46
RESTful API 架构解读 首先我们还是先介绍下 RESTful api 的来龙去脉。 首先, RESTful (下文都简称 RESTful api 为 RESTful ) 1、RESTful 这个概念最早是在 2000年 Roy Thomas Fielding 博士在他的博士论文《Architectural Styles and the Design of Network-based Software Architectures》 中提出了几种软件应用的架构风格,REST作为其中的一种架构风格在这篇论文的第5章中进行了概括性的介绍。 (其实我很好奇,为何国内的开发者们没能做出这些 标准通用级别的 规范) 这里 我们需要理解的就是 RESTful 它不是一种 类似于 http/https 的规范,而是一种 web 的架构。 而 RESTful 架构风格主要包含了 1)采用 URI 标识资源 2)用 '链接' 关联相关的资源 3)使用标准的 http 方法 4)支持多种资源表示方式 5)无状态性 接下来,就用着五点 继续往下介绍。 一、采用 URI 标识资源 首先 标识资源 中的 资源 指的是什么? 在任何 在客户端能够访问到的 任何形式(图片、文字、音频、视频等)的 事物均可以理解为资源。 同时, 存储在数据库中的数据也可以理解为资源。 并且 通过 uri 标识以后

构建一个 RESTful Web 服务

…衆ロ難τιáo~ 提交于 2020-01-19 15:12:17
该指南将引导你完成使用 Spring 创建 “Hello, World” RESTful web 服务的过程。 你将创建什么 你将创建一个能在以下地址接收 HTTP GET 请求的一个服务: http://localhost:8080/greeting 它将以 JSON 表现形式的问候语进行响应,如下清单所示: { "id" : 1 , "content" : "Hello, World!" } 你可以在查询字符串中使用可选的 name 参数来自定义问候语,如下清单所示: http://localhost:8080/greeting?name=User name 参数值将覆盖 World 的默认值,并反映在响应中,如下清单所示: { "id" : 1 , "content" : "Hello, User!" } 你需要什么 大概 15 分钟左右; 你最喜欢的文本编辑器或集成开发环境(IDE) JDK 1.8 或更高版本; Gradle 4+ 或 Maven 3.2+ 你还可以将代码直接导入到 IDE 中: Spring Too Suite (STS) IntelliJ IDEA 如何完成本指南 像大多数 Spring 入门指南一样,你可以从头开始并完成每个步骤,也可以绕过你已经熟悉的基本设置步骤。如论哪种方式,你最终都有可以工作的代码。 要从头开始,移步至 从 Spring

k8s restful API 结构分析

前提是你 提交于 2020-01-18 11:32:56
k8s的api-server组件负责提供restful api访问端点, 并且将数据持久化到etcd server中. 那么k8s是如何组织它的restful api的? 一, namespaced resources 所谓的namespaced resources,就是这个resource是从属于某个namespace的, 也就是说它不是cluster-scoped的资源. 比如pod, deployment, service都属于namespaced resource. 那么我们看一下如何请求一个namespaced resources. http://localhost:8080/api/v1/namespaces/default/pods/test-pod 可以看出, 该restful api的组织形式是: api api版本  namespaces 所属的namespace 资源种类 所请求的资源名称 api v1 namespaces default pods test-pod 这里api version如果是v1的话,表示这是一个很稳定的版本了, 以后不会有大的修改,并且当前版本所支持的所有特性以后都会兼容. 而如果版本号是v1alpha1, v1beta1之类的,则不保证其稳定性. 二, non-namespaced resources http:/