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

2020-5-11-HATEOAS简介

我们先来看一个现实中的问题。 问题来源 我们在项目开发中经常需要涉及同后端对接API。 对接的过程一般都是后端的同学给出一个文档,告诉我们有哪些API,可以获得什么样子的参数。...在Richardson Maturity Model中,HATEOAS为于最高层,可以显著提升RESTful API的可发现性和响应的自解释性。...假设我们有这么一个API,可以返回一个人和他孩子的名字。...HATEOAS的RESTful API 不但返回了我们所需的数据,还额外返回了一个links数组。...因为后端模型发现当前的children已经达到约束,因此,返回的响应中只给出了可执行的操作。 所以现在客户端可以更据返回的响应,决定自己的行为,真正实现了后端模型驱动。

90810

教你 10 分钟构建一套 RESTful API 服务( SpringBoot+MyBatis )

前言 随着前后端分离和微服务的兴起,在后端开发中,RESTful API 几乎变成一种标配 RESTful API 是一套成熟的互联网应用程序设计风格及开发方式,其最重要的 3 个特征如下: 1、无状态...第 4 步,按照功能,使用包名对项目进行分层 对项目进行分层,新建一些常用的包,包含:service、controller、domain 等 ?...("数据不存在");      }  } 第 6 步,返回数据标准化 为了方便后期维护,最后将 REST API 接口的结果进行一次封装 使用 Lombok 结合 swagger,将返回码、返回值等数据封装到方法内部进行返回...可视化 运行项目后,Spring Boot 自带的 Tomcat 会以 8080 端口号运行 使用浏览器访问 http://localhost:8080/swagger-ui.html 由于项目中集成了...最后 上面实现的 RESTful API,可以通过 CURL 或者 Postman 去测试,去一步步完善 下一篇文章将讲解 Python 中搭建 RESTful API 正确的姿势 如果你觉得文章还不错

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

    教你 10 分钟构建一套 RESTful API 服务( 上 )

    前言 随着前后端分离和微服务的兴起,在后端开发中,RESTful API 几乎变成一种标配 RESTful API 是一套成熟的互联网应用程序设计风格及开发方式,其最重要的 3 个特征如下: 1、无状态...本篇将从 Java - RESTful API 开始,使用的技术栈是:SpringBoot + MyBatis + Swagger2 2....第 4 步,按照功能,使用包名对项目进行分层 对项目进行分层,新建一些常用的包,包含:service、controller、domain 等 ?...("数据不存在"); } } 第 6 步,返回数据标准化 为了方便后期维护,最后将 REST API 接口的结果进行一次封装 使用 Lombok 结合 swagger,将返回码、返回值等数据封装到方法内部进行返回...可视化 运行项目后,Spring Boot 自带的 Tomcat 会以 8080 端口号运行 使用浏览器访问 http://localhost:8080/swagger-ui.html 由于项目中集成了

    1.1K30

    用它5分钟以后,我放弃用了四年的 Flask

    但要写成一个可以正常使用的项目,还是需要你自己写更多代码。...对于正常数据,正常使用: ? 现在我们把age字段改成字符串: ? 返回友好的提示信息,告诉我类型错误:age 字段不是 integer。 我们再试一试把name字段去掉: ?...返回友好信息,提示值错误:name字段丢失。 整个过程中,对类型的检查全都由 FastApi 自己完成。我们省下来很多时间。...使用pip或者pipenv即可安装 FastApi: pip install fastapi pipenv install fastapi 安装完成以后,我们来完成第一个 API: from fastapi...当我们使用 POST 方式提交数据时,FastApi 自动会以People中定义的字段为基准来校验数据,发现不对就返回报错信息。

    1.8K20

    ​JDK1.8 新特性 (八):还在重复写空指针检查代码?​

    1、前言 作为一名Java程序员,无论是初入茅庐的菜鸟,还是久经江湖的高手,曾经肯定遭遇过各种各样的异常错误。在国外的一篇文章中,就统计了关于异常类型的排行榜,如下图: ?...这是1965年发明空引用的结果……这导致了无数的错误,漏洞和系统崩溃,在最近40年中可能造成十亿美元的痛苦和破坏。”...Optional.empty()方法是一个静态工厂方法,它返回Optional类的特定单一实例。 Optional,本质上是一个容器对象,拥有一个非空值或空值,需要我们将对象实例传入该容器中。...后来接触到Optional其他API,我才发现真正体现它价值的是下面这些API。 3.1 Optional.map 从对象中获取某个属性,是最常见的操作。...比如,你可能需要从people对象中获取人名。在获取人名之前,你需要检查people对象是否为null,如下所示: String name = null; if (null !

    1.8K20

    前后端分离项目中的代理服务器配置与依赖冲突解决指南

    前后端分离项目中的代理服务器配置与依赖冲突解决指南 在现代 Web 开发中,前后端分离架构已经成为主流。前端通常使用 Vue、React 等框架,后端则使用 Java、Node.js 等技术栈。...开发环境中的代理配置 在开发环境中,Vue 项目通常使用 webpack-dev-server 提供的代理功能来转发请求。以下是具体的配置方法。...生产环境中的代理配置 在生产环境中,通常使用 Nginx 作为反向代理服务器,将前端和后端的请求统一转发。...使用 --force 强制安装: npm install --force 或者使用 --legacy-peer-deps 忽略 peer 依赖冲突: npm install --legacy-peer-deps...三、总结 在前后端分离的项目中,代理服务器的配置和依赖管理是两个关键问题。通过合理配置代理服务器,可以解决跨域问题,提升开发效率。同时,正确处理依赖冲突,可以避免项目运行时的各种错误。

    57910

    Spring Boot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能

    计量器用来收集不同类型的性能指标信息,Micrometer 提供了如下几种不同类型的计量器: 计数器(Counter): 表示收集的数据是按照某个趋势(增加/减少)一直变化的,也是最常用的一种计量器,例如接口请求总数、请求错误总数...Docker 方式启动,所以本机需要安装好 Docker 环境,这里忽略 Docker 的安装过程,着重介绍一下 Spring Boot 项目如何使用 Micrometer 来监控 Java 应用性能...Micrometer 来实现监控,而在 Spring Boot 1.5x 中可以通过micrometer-spring-legacy 来使用 micrometer,显然在 2.x 版本有更高的集成度,...当然,它也支持自定义监控指标,实现各个方面的监控,例如统计访问某一个 API 接口的请求数,统计实时在线人数、统计实时接口响应时间等功能,而这些都可以通过使用上边的四种计量器来实现。...people: " + people; } } 重启服务,访问一下 /v1/online 接口,得到一个 2000 以内的随机数作为实时在线人数,浏览器访问一下,得到结果如下: ?

    13.6K74

    Microsoft REST API指南

    示例包括无效凭证、错误的参数、未知的版本ID等。客户端传递错误的或者不合法的数据的情况通常返回 “4XX” 的 HTTP 错误代码。 错误不会影响API的整体可用性。...[*]译者注:错误可以理解成客户端参数错误,通常返回“4XX”状态码,并不影响整体的API使用。...错误对象还可以包括特定于代码的自定义服务器定义的键值对。带有自定义服务器定义属性的错误类型应该在服务的元数据文档中声明。请参见下面的例子。 错误响应返回的的任何JSON对象中都可能包含注释。...Delta查询的主要原则是: 集合中的每个项目必须具有持久标识符(永久不变的主键)。该标识符应该表示为“id”。此标识符由服务定义,客户端可以使用该字符串跨调用跟踪对象。...在常规表示中返回添加/修改的项,允许客户端使用基于“id”字段的标准合并概念将它们合并到现有的“缓存”中。 从定义的集合中删除的条目必须包含在响应中。

    6.2K11

    从别人的代码中学习golang系列--02

    这篇博客还是整理从https://github.com/LyricTian/gin-admin 这个项目中学习的golang相关知识 作者在项目中使用了https://github.com/google.../wire 做依赖注入,这个库我之前没有使用过,看了作者代码中的使用,至少刚开始是看着优点懵,不知道是做什么,所以这篇博客主要就是整理这个包的使用 依赖注入是什么?...代码中我们用了wire.Bind方法,为什么这么用呢?...,注入器将使用它向调用者返回一个聚合的清理函数,或者如果稍后在注入器实现中调用的提供程序返回一个错误,则使用它来清理资源。...关于这个功能的使用,通过https://github.com/LyricTian/gin-admin 的代码中的使用,可以更加清楚。

    1.3K20

    Flutter 与鸿蒙深度整合:如何实现原生功能调用

    本文将深入讲解:如何在 Flutter for HarmonyOS 项目中,安全、高效地调用鸿蒙原生 API,打通 Dart 与 ArkTS 的“任督二脉”。 一、为什么需要原生调用?...注意:本例基于 DevEco Studio + Flutter for HarmonyOS 项目模板。...onCreate 中注册 解决:确保 DevicePlugin.register() 被调用 ❌ 问题2:权限被拒绝 原因:未在 module.json5 声明权限,或用户拒绝 解决:检查权限声明,对敏感权限...(如位置)使用 requestPermissions ✅ 最佳实践: 统一 channel 命名规范:如 your.package/plugin_name 错误处理必须完善:避免 Dart 端 crash...异步操作使用 async/await:防止阻塞主线程 敏感操作加日志:便于调试(使用 HiLog) 六、进阶方向 一旦掌握基础通信,你就可以实现: 功能 所需鸿蒙 API 调用相机 @ohos.multimedia.camera

    33800

    Istio 安全基础

    一个简单的 API:它包括一个单独的并且很容易使用和维护的 AuthorizationPolicy CRD。...为了保护根 CA 密钥,我们应该使用在安全机器上离线运行的根 CA(比如使用 Hashicorp Vault 进行管理),并使用根 CA 向每个集群中运行的 Istio CA 颁发中间证书。...SPIFFE Verifiable Identity Document (SVID) 标准,将 SPIFFE ID 编码到一个加密的可验证的数据格式中。 颁发与撤销 SVID 的 API 标准。...应用上面的资源对象后,重新发送没有令牌的请求,请求失败并返回错误码 403: $ curl "$INGRESS_HOST:$INGRESS_PORT/headers" -s -o /dev/null -...another-host.com"] paths: ["/headers"] 需要注意的是 RequestsAuthentication 和 AuthorizationPolicy 这两个对象返回的错误码是不同的

    73910

    Node.js v17 来了,看看都有哪些新功能?

    Node.js v17 版本已发布,取代了 v16 做为当前版本,新的 v17 版本提供了一些新功能:基于 Promise 的其它核心模块 API、错误堆栈尾部增加 Node.js 版本信息、OpenSSL...基于 Promise 的 API Node.js 项目的一项持续性战略计划是为 Node.js 核心模块提供基于 Promise 的 API 支持,近年来已为 timer、stream 模块提供了 Promise...错误堆栈增加 Node.js 版本 堆栈跟踪是诊断应用程序错误信息的重要组成部分,在 Node.js v17 版本中,如果因为一些致命的错误导致进程退出,在错误堆栈的尾部将包含 Node.js 的版本信息...image.png 一个临时的解决方法是运行时增加 --openssl-legacy-provider 标志,应用程序不在报错。...Intl.DisplayNames API,支持语言、区域、货币、脚本四种类型,现在添加了两种新的类型:calendar、dateTimeField,分别返回不同的日历类型和日期时间字段的显示名称。

    2K30

    探秘JDK 13的黑科技:新特性一览

    使用Switch表达式的优势: 返回值: Switch表达式可以有返回值,你可以直接将结果赋值给变量。...Reimplement the Legacy Socket API 在JDK 13中,Java进行了一项重要的改进:重新实现了传统的套接字API。...重新实现Legacy Socket API的背景: 旧实现的问题: 传统的Java套接字API已经存在多年,虽然稳定可靠,但在设计上存在一些限制,这些限制可能导致性能问题和难以维护的代码。...开发者应该在新项目中使用这些API,并考虑在现有项目中逐步替换旧的套接字使用方式,特别是在性能和稳定性至关重要的场合。...通过重新实现Legacy Socket API,JDK 13为Java网络编程提供了一条提升性能和可靠性的新途径,使得Java应用能够更好地满足现代网络环境的需求。

    23600

    MCP vs 传统集成方案:REST API、GraphQL、gRPC的终极对比

    MCP vs 传统集成方案:REST API、GraphQL、gRPC的终极对比 Hello,我是摘星! 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。...在过去的几年中,REST API凭借其简单易用的特性成为了Web服务的标准选择,GraphQL以其灵活的数据查询能力赢得了前端开发者的青睐,而gRPC则以其高性能的特点在微服务架构中占据了重要地位。...技术特点深度分析2.1 REST API:简单可靠的经典选择REST(Representational State Transfer,表述性状态转移)API是目前最广泛使用的Web服务架构风格。...HTTP结构化错误状态码上下文错误监控集成成熟中等良好新兴团队协作容易需要协调需要协调标准化6....def __init__(self): self.legacy_client = {legacy_api.name}Client() async def

    66810
    领券