首页
学习
活动
专区
圈层
工具
发布

Java API设计 - RESTful之统一返回格式

RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。它的大原则容易把握,但是细节不容易做对。本文总结 RESTful 的设计细节,介绍如何设计出易于理解和使用的 API。...场景 API 统一返回参数 对于实际开发很重要 可规范API接口格式 便于统一调取或做封装 对于第三方调用很友好 也是最重要的一点(不会被第三方调用者评论,你这API设计的真”辣鸡“,简直没法看!)...分析 继承与HashMap,所以返回统一返回参数本身也就是一个Map,并且实现 于Serializable可反序列化。...代码 package com.parker.api.common.result; import com.fasterxml.jackson.annotation.JsonIgnore; import...public String getJsonStr() {//返回json字符串数组,将访问msg和key的方式统一化,都使用data.key的方式直接访问。

1.9K40

Restful API实现乐观锁,应返回409还是412?

近些年Restful API变得很流行,一个重要的原因是其充分利用HTTP协议标准,这样API Consumer消费Restful API的成本就小很多,API开发人员也更加有据可循。...Restful API复用HTTP协议的方法和状态码来指代不同的行为,比如POST代表创建一条资源,创建成功用201表示,请求校验失败用400表示;GET代表获取一条或多条资源,获取成功用200表示;DELETE...个人觉得,Restful API相比传统RPC(比如:SOAP)的区别,就可类比于面向对象编程和面向过程编程。...这里讨论一个问题,对于Restful API的PUT操作,在并发环境下,两个Request更新同一条资源,可能会出现更新内容丢失的情况。针对这个问题,通常可以“加锁”来解决,那么加什么锁呢?...上面提到update执行失败,返回相应状态码提示用户请求执行失败,那么对于Restful API,应该返回什么状态码呢? 根据HTTP规范,有两个状态码可以使用:409和412。

1.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用JWT做RESTful API的身份验证-Go语言实现

    原文作者:CoderMiner 在 使用Golang和MongoDB构建 RESTful API已经实现了一个简单的 RESTful API应用,但是对于有些API接口需要授权之后才能访问,在这篇文章中就用...jwt 做一个基于Token的身份验证,关于 jwt 请访问 JWT有详细的说明,而且有各个语言实现的库,请根据需要使用对应的版本。...需要先安装 jwt-go 接口 go get github.com/dgrijalva/jwt-go 新增注册登录接口,并在登录时生成token 自定义返回结果,并封装 helper/utils.go...14 } else { 15 r.Handler(route.Handler) 16 } 17 } return router 18} 实现身份验证的中间件...token信息 1//请求 post http://127.0.0.1:8080/login 2//返回 3 4{ "code": 200, "msg": "", "data": {

    1.8K10

    推荐17-Laravel 中使用 JWT 认证的 Restful API

    在此文章中,我们将学习如何使用 JWT 身份验证在 Laravel 中构建 restful API 。JWT 代表 JSON Web Tokens 。...我们将使用 JWT 身份验证在 laravel 中使用 restful API 构建基本用户产品列表。...让我们使用 JWT 身份验证在 laravel 中写 Restful API 的逻辑。...在 getAuthUser 方法中,验证请求是否包含令牌字段。然后调用 authenticate 方法,该方法返回经过身份验证的用户。最后,返回带有用户的响应。 身份验证部分现在已经完成。...发送请求,你将获得令牌。 ? 我们的用户现已注册并通过身份验证。我们可以发送另一个请求来检测 login 路由,结果会返回 200 和令牌。 ? 获取用户详情 ? 测试身份认证已完成。

    12.8K20

    5个REST API安全准则

    必须确保传入的HTTP方法对于会话令牌/API密钥和相关资源集合,操作和记录都是有效的。 例如,如果您有一个RESTful API的库,不允许匿名用户删除书目录条目,但他们可以获得书目录条目。...(4)防止跨站点请求伪造 对于RESTful Web服务公开的资源,重要的是确保任何PUT,POST和DELETE请求都受到防止跨站点请求伪造的保护。 通常,使用基于令牌的方法。...当设计REST API时,不要只使用200成功或404错误。 以下是每个REST API状态返回代码要考虑的一些指南。 正确的错误处理可以帮助验证传入的请求,并更好地识别潜在的安全风险。...401未授权 -错误或没有提供任何authencation ID /密码。 403禁止 -当身份验证成功,但身份验证的用户没有权限使用请求的资源。 404未找到 -当请求一个不存在的资源。...429太多的请求 -可能存在的DOS攻击检测或由于速率限制的请求被拒绝 (1)401和403 401“未授权”的真正含义未经身份验证的,“需要有效凭据才能作出回应。”

    4.5K10

    六种Web身份验证方法比较和Flask示例代码

    它适用于 API 调用以及不需要持久会话的简单身份验证工作流。 流程 未经身份验证的客户端请求受限资源 返回 HTTP 401 未授权,其标头值为 。...用户使用有效凭据进行身份验证,服务器返回签名令牌。此令牌可用于后续请求。 最常用的令牌是 JSON Web 令牌 (JWT)。...JWT由三部分组成: 标头(包括令牌类型和使用的哈希算法) 有效负载(包括声明,即有关主题的语句) 签名(用于验证邮件在此过程中是否未更改) 这三种都是 base64 编码的,并使用 a 和散列进行串联...- IETF 令牌不需要保存在服务器端。只需使用其签名即可对其进行验证。最近,由于RESTful API和单页应用程序(SPA)的兴起,令牌采用率有所增加。 流程 优点 它是无状态的。...对于 RESTful API,基于令牌的身份验证是推荐的方法,因为它是无状态的。 如果必须处理高度敏感的数据,则可能需要将 OTP 添加到身份验证流中。 最后,请记住,显示的示例只是触及表面。

    9.3K40

    Sitecore 9 您应该了解的所有新功能和变化

    大创意概述: xDB现在支持SQL Server 新的xConnect架构 Sitecore体验商务 Sitecore Cortex /机器学习 新功能概述 开箱即用 无头CMS支持 联合身份验证 SXA...它提供了一个API,用于跨所有设备收集客户数据。 xConnect允许ERP,CRM,移动应用程序,商业智能工具和信标技术直接参与创建和共享客户视图。 在第9版之前,Sitecore是中间人。...由于没有对客户数据的直接API访问,因此与客户配置文件相关的所有内容都必须通过Sitecore Web应用程序。现在,每个系统都可以直接访问客户数据。...您始终能够将Sitecore配置为返回JSON并在其上构建客户端应用程序,但您无法在以这种方式构建的站点中利用体验编辑器。 现在使用Sitecore 9,体验编辑器功能可用于客户端应用程序。...联合身份验证 联合身份验证是指向授予应用程序权限的中央权限进行身份验证的功能。 在Sitecore 9之前,权限基本上会同步到Sitecore成员资格数据库中,并由Sitecore在本地管理。

    16900

    Sitecore xDB基础知识 - 识别用户,联系人,访客,客户

    如果我们的网站有经过身份验证的部分(登录),那么它会将这些用户带到Sitecore后端报告中,就像营销用户所期望的那样。...它使Sitecore后端看起来好多了! Sitecore体验配置文件与您的身份验证/成员资格/用户存储不同。...通过xDB和Sitecore联系人,我们可以以相同的方式跟踪和识别经过身份验证的用户和未经身份验证的用户。 我们如何识别用户?...无论哪种方式,它都将使用以下Sitecore API: // identify the user Sitecore.Analytics.Tracker.Current.Session.Identify(...您通常会使用以下之一: 用户名/登录/用户ID - 如果用户已通过身份验证 电子邮件地址 - 如果用户通过订阅注册或联系表单等交互提供了电子邮件 在我们使用上述代码识别用户之后,期望体验资料相应地更新是合理的

    16900

    关于Web验证的几种方法

    它适用于 API 调用以及不需要持久会话的简单身份验证工作流。...流程 未经身份验证的客户端请求受限制的资源 返回的 HTTP401Unauthorized 带有标头WWW-Authenticate,其值为 Basic。...用于存储用户会话信息的会话存储需要在多个服务之间共享以启用身份验证。因此,由于 REST 是无状态协议,它不适用于 RESTful 服务。...基于令牌的身份验证 这种方法使用令牌而不是 cookie 来验证用户。用户使用有效的凭据验证身份,服务器返回签名的令牌。这个令牌可用于后续请求。...对于 RESTful API,建议使用基于令牌的身份验证,因为它是无状态的。 如果必须处理高度敏感的数据,则你可能需要将 OTP 添加到身份验证流中。 最后请记住,本文的示例仅仅是简单的演示。

    4.9K30

    在Sitecore8.2解决方案中使用Swagger作为API管理工具

    假设您的Sitecore解决方案需要一些API服务。显而易见的是使用.net Web API实现它们。有时,在构建消费应用程序时,理解API的各种方法对开发人员来说可能是一项挑战。...假设您的Sitecore解决方案需要一些API服务。显而易见的是使用.net Web API实现它们。有时,在构建消费应用程序时,理解API的各种方法对开发人员来说可能是一项挑战。...Swagger 是RESTful API的机器可读表示, 支持交互式文档,客户端SDK生成和可发现性。...但是,Sitecore有很多自己使用的Web API服务,很难找到我自己的服务。将Sitecore本机Web API控制器与我的分离是很好的。...can switch to My services API /swagger/docs/my_services)"); }); 现在我们为Sitecore API和My API提供了2个独立的视图

    16510

    慕课网Flask构建可扩展的RESTful API-5. Token与HTTPBasic验证 —— 用令牌来管理用户

    5.1 Token 1.Token概述 以下是网站登录和使用API登录的区别 ?...Token具有有效期 Token可以标示用户身份,如存储用户id 2.获取Token令牌 密码校验--models/user.py @staticmethod def verify(email, password..._password, raw) 返回token的试图函数,这里稍微破坏一下REST的规则,由于登录操作密码安全性较高,使用GET的话会泄漏 @api.route('', methods=['POST']...由于每个需要验证token的试图函数都需要上面的业务逻辑,所以我们可以编写一个装饰器,以面向切面的方式统一处理,编写一个函数验证token,如果验证通过,我们就继续执行试图函数的方法,如果不通过,我们就返回一个自定义异常...@api.route('/secret', methods=['POST']) def get_token_info(): """获取令牌信息""" form = TokenForm().validate_for_api

    1.5K50

    什么是REST API

    因此,一个API请求可以被验证,以确保一个用户已经登录并拥有适当的权限。 第三方应用程序必须使用替代的授权方法。常见的认证选项[15]包括: HTTP基本身份验证[16]。...在发出任何请求之前,通过向OAuth服务器发送一个客户ID和可能的客户秘密,获得一个令牌。然后,OAuth令牌会随每个API请求一起发送,直到过期。...API身份验证将根据使用上下文而有所不同: 在某些情况下,第三方应用程序被视为像任何其他具有特定权利和权限的登录用户。例如,一个地图API可以将两点之间的方向返回给调用的应用程序。...避免在客户端JavaScript中暴露API令牌。 阻止来自未知域名或IP地址的访问。 阻止意外的大型有效负载。 考虑速率限制,也就是使用同一API令牌或IP地址的请求被限制在每分钟N个以内。...RESTful API。

    5.2K20

    OAuth2.0 OpenID Connect 一

    然后,出现了 OAuth 和 OAuth 2.0——同样是开放的,也是一种使用 JSON 作为媒介的现代 RESTful 授权方法。...许多查询参数指示您在验证后期望返回的内容以及您将有权访问的内容(授权)。 通常,您需要使用/tokenHTTP POST 访问端点以获取用于进一步交互的令牌。...考虑因素包括应用程序的类型(如基于 Web 或本机移动应用程序)、您希望如何验证令牌(在应用程序中或在后端)以及您希望如何访问其他身份信息(进行另一个 API 调用或拥有它直接编码成令牌)。...然后可以将这些令牌返回给最终用户应用程序,例如浏览器,而浏览器不必知道client secret. 此流程允许通过使用refresh tokens....此外,JWT 的签名部分与密钥一起使用,以验证整个 JWT 未以任何方式被篡改。 JWT 一开始,JWT是不透明的——它们不携带任何内在信息。

    1.2K30

    REST API面临的7大安全威胁

    如果不采取适当的安全预防措施,这种攻击能够将RESTful API呈现为拒绝使用的情况。最近,无论您的API是否公开,其他人(包括攻击者)都可能访问它。 ?...即使禁用了用于应用程序身份验证的API密钥(或访问令牌),也可以通过标准浏览器请求轻松地重新获取密钥。因此,使当前的访问令牌无效不是一个长期的解决方案。...但是,为了更好地防止DoS攻击,需要使用HTTPS和更健壮的身份验证机制,包括OAuth、相互(双向)TLS(传输层安全)身份验证或SAML(安全断言标记语言)令牌。...打破身份验证 这些特定的问题可能使攻击者绕过或控制web程序使用的身份验证方法。缺少或不充分的身份验证可能导致攻击,从而危及JSON web令牌、API密钥、密码等。...应该只允许经过身份验证的用户访问api。 使用OpenId/OAuth令牌、PKI和API密钥可以很好地满足API的授权和身份验证需求。

    2.4K20

    每天用SpringBoot,还不懂RESTful API返回统一数据格式是怎么实现的?

    为了更好的说明问题,本文先说明如何实现,然后再详细剖析实现原理(这很关键) 为什么要做统一数据返回格式 前后端分离是当今服务形式的主流,如何设计一个好的 RESTful API ,以及如何让前端小伙伴可以处理标准的...API 了,所有的返回值都会有统一的 JSON 结构 测试 新建 UserController,添加相应的 RESTful API,测试用例写的比较简单,只为了说明返回值的处理 @RestController...继续添加 RESTful API,根据用户 ID 查询用户信息 @GetMapping("/{id}") public UserVo getUserByName(@PathVariable Long id...其实还没完,你有没有想过,如果我们的 API 方法返回值是 org.springframework.http.ResponseEntity 类型,我们可以指定 HTTP 返回状态码,但是这个返回值会直接放到我们的...回复「demo」获取完整代码 这是 RESTful API 正常返回内容的情况,下一篇文章,让我们来侦查一下统一异常情况的处理以及实现原理 灵魂追问 返回值是非 ResponseEntity 类型时,用的是什么

    1.2K10

    每天用SpringBoot,还不懂RESTful API返回统一数据格式是怎么实现的?

    为了更好的说明问题,本文先说明如何实现,然后再详细剖析实现原理(这很关键) 为什么要做统一数据返回格式 前后端分离是当今服务形式的主流,如何设计一个好的 RESTful API ,以及如何让前端小伙伴可以处理标准的...API 了,所有的返回值都会有统一的 JSON 结构 测试 新建 UserController,添加相应的 RESTful API,测试用例写的比较简单,只为了说明返回值的处理 @RestController...List JSON 数据 继续添加 RESTful API,根据用户 ID 查询用户信息 @GetMapping("/{id}") public UserVo getUserByName(@PathVariable...其实还没完,你有没有想过,如果我们的 API 方法返回值是 org.springframework.http.ResponseEntity 类型,我们可以指定 HTTP 返回状态码,但是这个返回值会直接放到我们的...回复「demo」获取完整代码 这是 RESTful API 正常返回内容的情况,下一篇文章,让我们来侦查一下统一异常情况的处理以及实现原理 灵魂追问 返回值是非 ResponseEntity 类型时,用的是什么

    96820
    领券