restful

Spring MVC Rest 返回值为空

£可爱£侵袭症+ 提交于 2020-04-06 22:06:46
问题描述: 采用Spring Restful ,可以通过浏览器的地址栏URL正确访问后台且不报错误,但是前台总是获取不到数据,前台也是收到了后台的响应,就是没有数据。 具体如下: 采用 Spring Restful 对不同的格式,可以发送不同格式化的数据,比如Json、XML、HTML..... 对于配置文件如下: 参考 Spring MVC Rest 学习 一: http://my.oschina.net/heweipo/blog/337581 参考Spring MVC Rest 学习 二: http://my.oschina.net/heweipo/blog/340040 对于Controller的接口,一开始如下声明: @RequestMapping("/getMessage") public String getMessage(HttpServletRequest request , HttpServletResponse response , ModelMap model){ model.put("message",new Message()); return null; } 在浏览器中请求,http:ip:port/server/uri/getMessage.json 结果是:这个方法可以访问到,因为我用断点试过了,但是返回值却是空的

RESTful API 最佳实践

允我心安 提交于 2020-04-05 20:02:21
RESTful是目前最流行的 API 设计规范,用于 Web 数据接口的设计。 它的大原则容易把握,但是细节不容易做对。本文总结 RESTful 的设计细节,介绍如何设计出易于理解和使用的 API。 一、URL 设计 1.1 动词 + 宾语 RESTful 的核心思想就是,客户端发出的数据操作指令都是"动词 + 宾语"的结构。 比如,GET /articles这个命令,GET是动词,/articles是宾语。 动词通常就是五种 HTTP 方法,对应 CRUD 操作。 GET :读取(Read) POST:新建(Create) PUT :更新(Update) PATCH:更新(Update),通常是部分更新 DELETE:删除(Delete) 复制代码 根据 HTTP 规范,动词一律大写。 1.2 动词的覆盖 有些客户端只能使用GET和POST这两种方法。服务器必须接受POST模拟其他三个方法(PUT、PATCH、DELETE)。 这时,客户端发出的 HTTP 请求,要加上X-HTTP-Method-Override属性,告诉服务器应该使用哪一个动词,覆盖POST方法。 根据 HTTP 规范,动词一律大写。 1.2 动词的覆盖 有些客户端只能使用GET和POST这两种方法。服务器必须接受POST模拟其他三个方法(PUT、PATCH、DELETE)。 这时,客户端发出的 HTTP 请求

RESTful设计规范

心不动则不痛 提交于 2020-04-05 15:10:27
一、 摘要(Abstract) RESTful API 已经非常成熟,也得到了大家的认可。我们按照 Richardson Maturity Model 对 REST 评价的模型,规范基于 level2 来设计 二、版本(Versioning) API的版本号放入URL。例如: https: // api.jiuyescm.com /v1/ https: // api.jiuyescm.com /v1.2/ 三、资源、路径(Endpoint) 路径,API的具体地址。在REST中,每个地址都代表一个具体的资源( Resource )约定如下: 路径仅表示资源的路径(位置),尽量不要有actions操作(一些特殊的 actions 操作除外) 路径以 复数(名词) 进行命名资源,不管返回单个或者多个资源。 使用 小写字母、数字以及下划线(“_”) 。(下划线是为了区分多个单词,如user_name) 资源的路径从父到子依次如: /{resource}/ {resource_id} /{sub_resource}/ {sub_resource_id}/{sub_resource_property} 使用 ? 来进行资源的过滤、搜索以及分页等 使用版本号,且版本号在资源路径之前 优先使用内容协商来区分表述格式,而不是使用后缀来区分表述格式 应该放在一个专用的域名下,如: http:/

Restful风格

不想你离开。 提交于 2020-03-30 20:51:26
今天看到一个比较好的文章,记录一下: Restful风格API中用put还是post做新增操作有什么区别? 1 HTTP协议详解 HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图所示: 默认HTTP的端口号为80,HTTPS的端口号为443。 HTTP协议永远都是客户端发起请求,服务器回送响应。见下图: 这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。 HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。 一次HTTP操作称为一个事务,其工作过程可分为四步: 1)首先 客户机 与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。 2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。 3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。 4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。 如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出

Restful风格数据获取

戏子无情 提交于 2020-03-30 20:50:08
Restful 就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 资源:互联网所有的事物都可以被抽象为资源 资源操作:使用 POST 、 DELETE 、 PUT 、 GET ,使用不同方法对资源进行操作。 分别对应 添加、 删除、修改、查询。 使用 RESTful 操作资源 http://127.0.0.1/item/1 查询 ,GET http://127.0.0.1/item 新增 ,POST http://127.0.0.1/item 更新 ,PUT http://127.0.0.1/item/1 删除 ,DELETE 1 /** 2 * 使用RESTful风格开发接口,实现根据id查询商品 3 * 4 * @param id 5 * @return 6 */ 7 @RequestMapping("item/{id}") 8 @ResponseBody 9 public Item queryItemById(@PathVariable() Integer id) { 10 Item item = this.itemService.queryItemById(id); 11 return item; 12 } 来源: https://www.cnblogs.com/Allen-Wei/p

集成 Swagger2 构建强大的 RESTful API 文档

杀马特。学长 韩版系。学妹 提交于 2020-03-29 07:04:03
微信公众号:一个优秀的废人如有问题或建议,请后台留言,我会尽力解决你的问题。 前言 快过年了,不知道你们啥时候放年假,忙不忙。反正我是挺闲的,所以有时间写 blog。今天给你们带来 SpringBoot 集成 Swagger2 的教程。 什么是 Swagger2 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 为什么使用 Swagger2 ? 相信刚开始不熟悉 web 开发的时候,大家都有手写 Api 文档的时候。而手写 Api 文档主要有以下几个痛点: 文档需要更新的时候,需要再次发送一份给前端,也就是文档更新交流不及时。 接口返回结果不明确。 不能直接在线测试接口,通常需要使用工具,比如 postman。 接口文档太多,不好管理。 这些痛点在前后端分离的大型项目上显得尤为烦躁。而 Swagger2 的出现恰好能个解决这些痛点。因为 Swagger2 有以下功能: 文档自动更新,只要生成 Api 的网址没变,基本不需要跟前端沟通。 接口返回结果非常明确,包括数据类型,状态码,错误信息等。 可以直接在线测试文档,而且还有实例提供给你。 只需要一次配置便可使用,之后只要会有一份接口文档,非常易于管理。 集成演示 首先新建一个 SpringBoot 项目,还不会的参考我这篇旧文—— 如何使用 IDEA 构建 Spring

Idea利用SpringMVC创建servlet web工程需要的maven配置

[亡魂溺海] 提交于 2020-03-27 00:12:26
1.如果不需要spring mvc,删除相关dependency即可。 2.Idea->pom.xml <!-- 以下为创建java spring mvc restful风格使用的jar包 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.2.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2<

RESTful-1概述

故事扮演 提交于 2020-03-25 06:34:49
一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 概述 REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,Roy Fielding是 HTTP 规范的主要编写者之一。在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简单明了,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简单轻量的方法设计和实现。值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。 [1] 原则条件 REST 指的是一组架构 约束条件 和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。 Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合 云计算 之类的环境

RestFul API 统一格式返回 + 全局异常处理

試著忘記壹切 提交于 2020-03-24 12:27:54
一、背景 在分布式、微服务盛行的今天,绝大部分项目都采用的微服务框架,前后端分离方式。前端和后端进行交互,前端按照约定请求 URL 路径,并传入相关参数,后端服务器接收请求,进行业务处理,返回数据给前端。 所以统一接口的返回值,保证接口返回值的幂等性很重要,本文主要介绍博主当前使用的结果集。 二、统一格式设计 2.1 统一结果的一般形式 示例: { # 是否响应成功 success: true, # 响应状态码 code: 200, # 响应数据 data: Object # 返回错误信息 message: "", } 2.2 结果类枚举 public enum ResultCodeEnum { /*** 通用部分 100 - 599***/ // 成功请求 SUCCESS(200, "successful"), // 重定向 REDIRECT(301, "redirect"), // 资源未找到 NOT_FOUND(404, "not found"), // 服务器错误 SERVER_ERROR(500,"server error"), /*** 这里可以根据不同模块用不同的区级分开错误码,例如: ***/ // 1000~1999 区间表示用户模块错误 // 2000~2999 区间表示订单模块错误 // 3000~3999 区间表示商品模块错误 // 。。。 ; /** *

Restful levels层级 和HATEOAS原则

▼魔方 西西 提交于 2020-03-23 04:12:22
Restful levels: 要知道API的哪个级别,Richardson引入了一个名为 Richardson Maturity Model的模型 。正如名称本身所暗示的,它讲述了REST API的成熟度级别。 根据Richardson成熟度模型,任何REST API都属于从0级到3级的任何成熟度级别,如下所述。 开发的每个REST API都不必高达3级。但是这个模型可以帮助REST API的开发人员知道他们的API属于哪个级别,以及如何通过在上面的模型层次结构中向上移动来改善他们的API 。 0级:POX的沼泽 在此级别设计的API根本不是Rest API,而是基于SOAP的Web服务发生的地方。 在此级别,没有基于资源的URI, 超媒体的概念,也没有正确使用HTTP协议 (这是REST API的关键特性)。实际上,属于此级别的API不会充分利用或利用HTTP协议的全部潜力。HTTP仅被视为传输层协议或仅仅是客户端和服务器之间的隧道机制。 第1级:基于资源的地址/ URI 这是REST API的起始级别。在这个层面上,概念的资源基础地址被 引入,它告诉你应该有个人的URI服务器上的每个资源(不像LEVEL 0,我们有一个单一的URI从客户端的每个传入的请求)。 这就像减少了从单个端点(处理所有操作的LEVEL 0端点)到多个基于资源的URI(如Divide and