restful

restful规范

感情迁移 提交于 2020-02-13 04:30:24
一.什么是restful规范 REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用转变状态 所有的数据,不过是通过网络获取的还是操作(增删改查)的数据,都是资源,将一切数据视为资源是REST区别与其他架构风格的最本质属性 对于REST这种面向资源的架构风格,有人提出一种全新的结构理念,即:面向资源架构(ROA:Resource Oriented Architecture) 二.restful的十条规范 重要规范:   1. 路径,视网络上任何东西都是资源,均使用名词表示(可复数)    127.0.0.1/get_all_book/   2. method,通过请求方式来表示进行的操作 127.0.0.1/books/ get请求:表示获取所有图书    127.0.0.1/books/1 get请求:表示获取id为1的图书    127.0.0.1/books/ post请求:表示新增一本书    127.0.0.1/books/ delete请求:表示删除一本书    127.0.0.1/books/ put/patch请求

Django系列:Restful CBV

北城余情 提交于 2020-02-11 15:20:55
CBV 类视图 CBV 继承自View 注册的时候使用的as_view() 入口 不能使用请求方法的名字作为参数的名字 只能接受已经存在的属性对应的参数 定义了一个view 创建了一个类视图对象 保留,拷贝传递进来的属性和参数 调用dispatch方法 分发 如果请求方法在我们的允许的列表中 从自己这个对象中获取请求方法名字小写对应的属性,如果没有找到,会给一个默认http_method_not_allowded 如果请求方法不在我们允许的列表中,直接就是http_method_not_allowed 之后将参数传递,调用函数 默认实现了options 获取接口信息,可以获取接口都允许什么请求 简化版流程 as_view dispath 调用实现请求方法对应的函数名 urls.py from django.conf.urls import url from CBV import views urlpatterns = [ url(r'^hello/', views.HelloCBV.as_view(msg='Sleeping'), name='hello'), url(r'^books/', views.BooksCBV.as_view(), name='books'), ] models.py from django.db import models class Book

Python Flask构建可扩展的RESTful API

随声附和 提交于 2020-02-10 02:01:45
第1章 随便聊聊 聊聊Flask与Django,聊聊代码的创造性 1-1 Flask VS Django 1-2 课程更新维护说明 第2章 起步与红图 本章我们初始化项目,探讨与研究Flask的默认层级结构。当我们遇到层级结构不合理时,我们将模仿蓝图自己定义一个“红图”来扩展Flask层级体系 2-1 环境、开发工具与flask1.0 2-2 初始化项目 2-3 新建入口文件 2-4 蓝图分离视图函数的缺陷 2-5 打开思维,创建自己的Redprint——红图 2-6 实现Redprint 2-7 优化Redprint 第3章 REST基本特征 本章我们将探讨REST的基本特征,并结合实际情况给出REST的适用范围与优劣势 3-1 REST的最基本特征(可选观看) 3-2 为什么标准REST不适合内部开发(可选观看) 第4章 自定义异常对象 异常处理其实是一个非常严肃而又麻烦的事情,这直接涉及到前端如何对用户做出响应。本章我们将重写HTTPException并建立全局异常处理机制,统一处理框架内的异常,向前端返回统一而标准的异常信息,简化前端的开发流程 4-1 关于“用户”的思考 4-2 构建Client验证器 4-3 处理不同客户端注册的方案 4-4 创建User模型 4-5 完成客户端注册 4-6 生成用户数据 4-7 自定义异常对象 4-8 浅谈异常返回的标准与重要性 4-9

重学Node 0x3 RESTful Services and Express

两盒软妹~` 提交于 2020-02-06 01:05:51
RESTful Representational State Transfer Express // index.js const express = require('express') const app = express() app.get('/', (req, res) => { res.send('Helo Express') }) app.listen(3000, () => { console.log('Listening on port 3000...') }) nodeMon npm i -g nodemon nodemon : 无法加载文件 C:\Users\cell\AppData\Roaming\npm\nodemon.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。 解决方案: (1) 管理员身份运行PowerShell (2)输入下面命令并回车 set-ExecutionPolicy RemoteSigned (3)选择Y (4)重新尝试 Handling HTTP GET Request // index.js const express = require('express') const

WebAPI规范设计——违RESTful

廉价感情. 提交于 2020-02-04 16:01:22
本文首先简单介绍了几种API设计风格(RPC、REST、GraphQL),然后根据实现项目经验提出WebAPI规范设计思路,一些地方明显违反了RESTful风格,供大家参考! 一、几种设计风格介绍 1.1 RPC 这是最常见的方式,RPC说的是本地调用远程的方法,面向的是过程,估计超过50%的API是这种分格的。 RPC形式的API组织形态是类和方法,或者说领域和行为。 因此API的命名往往是一个动词,比如 GetUserInfo,CreateUser 。 因为URI会非常多而且往往没有一些约定规范,所以需要有详细的文档。 也是因为无拘无束,HTTP方法基本只用GET和POST,设计起来比较简单。 1.2 REST REST架构风格有四个级别的成熟度: 级别 0:定义一个 URI,所有操作是对此 URI 发出的 POST 请求。 级别 1:为各个资源单独创建 URI。 级别 2:使用 HTTP 方法来定义对资源执行的操作。 级别 3:使用超媒体(HATEOAS)。 级别0其实就是类RPC的风格,级别3是真正的REST,大多数号称REST的API在级别2。REST实现一些要点包括: REST形式的API组织形态是资源和实体,一切围绕资源(级别1的要点)。 会定义一些标准方法(级别2的要点),然后把标准方法映射到实现(比如HTTP Method): GET:获取资源详情或资源列表

SpringBoot 2 超媒体驱动 RESTful Web 服务

戏子无情 提交于 2020-02-04 12:24:02
开篇词 该指南将引导你使用 Spring 创建 “Hello, World” 超媒体驱动的 REST Web 服务。 超媒体 是 REST 的重要体现。它使我们可以构建将客户端和服务器在很大程度上分离并使其独立发展的服务。为 REST 资源返回的展示形式不仅包含数据,而且还包含与相关资源的链接。因此,展示的设计对于整体服务的设计至关重要。 你将创建的应用 我们将使用 Spring HATEOAS 构建超媒体驱动的 REST 服务:一个 API 库,可用于创建指向 Spring MVC 控制器的链接,建立资源展示并控制如何将它们呈现为受支持的超媒体格式(例如 HAL)。 该服务将在 http://localhost:8080/greeting 接受 HTTP GET 请求。 它将以问候语的 JSON 展示形式进行响应,该问候语中包含了最简单的超媒体元素,即指向资源本身的链接。以下清单显示了输出: { "content" : "Hello, World!" , "_links" : { "self" : { "href" : "http://localhost:8080/greeting?name=World" } } } 响应已经表明我们可以使用查询字符串中的可选 name 参数来自定义问候语,如下清单所示: http://localhost:8080/greeting?name

SpringMVC RESTful

不羁的心 提交于 2020-02-02 08:37:14
RESTful是web应用的一种设计风格、开发方式。 以根据product_id查询产品信息为例。 原来的写法 @org.springframework.stereotype.Controller public class ProductController{ @RequestMapping("/queryProduct") public ModelAndView queryStudent(int product_id) { ModelAndView mav = new ModelAndView("product_info"); //此处省略调用dao层获取产品信息,得到Product类的实例product //将数据传给视图,展示产品信息 mav.addObject("product", product); return mav; } } 请求地址: http://.../queryProduct?product_id=1 RESTful风格的写法 @org.springframework.stereotype.Controller public class ProductController{ @RequestMapping("/product/{product_id}") public ModelAndView queryStudent(@PathVariable int

Flask之RESTFul API前后端分离

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-01 18:56:09
Flask之RESTFul API前后端分离 一:虚拟环境搭建的两种方式 1 pipenv的使用 pip install --user pipenv安装pipenv在用户目录下 py -m site --user-site通过此命令找到用户基础目录,结果为C:\Users\u14e\AppData\Roaming\Python\Python35\site-packages 将用户基础目录结尾的site-packages换成Scripts,即C:\Users\u14e\AppData\Roaming\Python\Python35\Scripts,然后将这一路径添加到系统变量中 重新打开命令行工具,如cmd,pipenv --version检查是否安装成功 pipenv install创建一个虚拟环境 pipenv shell激活虚拟环境,exit推出虚拟环境 pipenv install requests安装python包,pipenv install django==1.11.7安装制定版本的包,pipenv uninstall requests卸载包 pipenv graph查看安装的包,以及依赖的其他包 ​ 2 pip virtualenv(使用workon进行管理)的使用 # 1 安装 pip install virtualenv virtualenv --version

SpringBoot 2 Actuator 构建 RESTful Web 服务

◇◆丶佛笑我妖孽 提交于 2020-01-31 09:12:43
开篇词 Spring Boot Actuator 是 Spring Boot 的子项目。它为你的应用增加了几项生产级服务,这不需要你付出多大的努力就能实现。在该指南中,你将构建一个添加这些服务的应用。 你将创建的应用 该指南将指导你使用 Spring Boot Actuator 创建一个 “Hello, world” RESTful Web 服务。我们将构建一个接受以下 HTTP GET 请求的服务: $ curl http://localhost:9000/hello-world 它响应了以下 JSON 数据: { "id" : 1 , "content" : "Hello, World!" } 应用中还添加了许多功能,用于在生产(或其他)环境中管理服务。我们构建的服务的业务功能与构建 RESTful Web 服务中的功能相同。尽管比较结果可能会很有趣,但我们无需借助那个指南即可完成该指南。 你将需要的工具 大概 15 分钟左右; 你最喜欢的文本编辑器或集成开发环境(IDE) JDK 1.8 或更高版本; Gradle 4+ 或 Maven 3.2+ 你还可以将代码直接导入到 IDE 中: Spring Too Suite (STS) IntelliJ IDEA 如何完成这个指南 像大多数的 Spring 入门指南 一样,你可以从头开始并完成每个步骤

什么是RESTful?

流过昼夜 提交于 2020-01-31 08:35:26
符合REST原则的架构方式即可称为RESTful Rest架构的主要原则 1、网络上的所有事物都被抽象为资源 2、 每个资源都有一个唯一的资源标识符 3、同一个资源具有多种表现形式(xml,json等) 4、 对资源的各种操作不会改变资源标识符 5、 所有的操作都是无状态的 来源: https://www.cnblogs.com/lingboweifu/p/11808250.html