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

REST API 设计最佳实践:如何构建、设计和使用 API ?

作为一名开发者,我很幸运能够在工作中使用一些仍然存在的SOAP服务。但是,我主要接触的是REST,这是一种基于资源的API和Web服务开发架构风格。...在我的职业生涯中有很大一部分时间都参与了构建、设计和使用API 的项目。我见过的大多数API 都“声称” 是 “符合REST原则”的——意味着遵循 REST 架构的原则和约束。..., 4xx 表示客户端错误 和5xx 表示服务器错误 当然你还可以使用其他 HTTP 协议提供给 REST API 设计的功能 ,但这些都必须牢记在心里。...现在问题来了:如何将这样的功能融入REST API? 我的答案是:使用查询字符串(querystring)。 我认为使用查询字符串实现分页非常明显。它看起来像这样: GET: /books?...使用专门针对REST API的网络框架 作为最后一个最佳实践,让我们讨论这个问题:如何在您的API中实际应用最佳实践?大多数时候,您希望建立一个快速的API,以便一些服务可以相互交互。

2.2K40

如何使用Spring和Java配置构建一个REST API

使用@ExceptionHandler 7. 附加的Maven依赖项 8. 总结 1. 概览 本文展示了如何在Spring中配置REST——控制器和HTTP状态响应码、有效负载编排和内容协商的配置。...的情况下,如果它检测到Jackson和JAXB 2在类路径上存在,就会自动创建和注册默认的JSON和XML converter。...API的一部分,因此应该只在对应于REST的适当层中使用;例如,如果存在DAO/DAL层,则不应该直接使用上面的自定义异常。...附加的Maven依赖项 除了标准的web应用程序所需的spring-web-mvc依赖之外,我们还需要为REST API配置内容编排和反编排: <dependency...总结 本教程演示了如何使用Spring 4和Java配置来实现一个REST服务,讨论了HTTP响应码、基本内容协商和编排。

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

    App项目实战之路(二):API篇

    所以,还是需要建立自己的用户体系,这一点无法偷懒了。 关于第2点,则是因为微信对这部分接口做了权限控制,只有通过了开发者资质认证才有权开通此接口。但微信的开发者资质认证并不支持个人开发者。...其实,未认证的开发者建立的App只有分享的权限,根本没有登录的权限。所以,微信登录这条路根本通不了。因此,我决定不用微信登录了,改用Github登录。...从上面的例子就可以看出,前面两种定义,每个接口分别用了一个操作性的词语去定义;而最后一种定义,登录和退出登录都属于 /session 资源,注册和查询用户资料都属于 /user 资源,然后分别用POST...其实,使用REST风格设计API,我觉得难点就在于如何抽象资源。使用RPC则相对容易很多。这时,也许有人就会提出疑问了。既然使用RPC比用REST更容易抽象出接口,那为何还要用REST呢?...我们知道,面向过程的思考方式处理问题更直接简单,那为什么我们还要使用面向对象呢?至于这个问题的答案,我就不再展开了。 API定义 本项目的API是打算使用REST方式定义的。

    1.4K20

    最强平替Postman的工具,拒绝浏览器套壳

    Postman作为最主流的REST测试工具,可以说定义了整个行业的生态,但是其糟糕的性能、强制登录、商业收费等等原因导致其逐渐被众多开发测试人员抛弃。...功能免费 在之前版本里,Reqable社区版会对API集合和API标签页数量进行限制,但是最近Reqable社区版已经完全放开了这些限制,可以免费使用了。...除了免费之外,没有登录,没有注册,没有广告,安装后就可以创建API测试,非常适合追求效率的同学。 2....强劲性能 Reqable使用Flutter和C++开发,拥有极高的性能,比如秒启动、低内存、低存储空间、交互流畅等等都都能够满足。...启动时间是通过录屏后解析帧差的方式计算得出,内存使用为初始安装后应用直接置于后台时的统计数据。

    1.3K20

    Fluwx:让在Flutter中使用微信SDK成为可能

    如果你正在或想开发一个Flutter项目但苦于无法使用微信分享、登录,那么Fluwx可能正是你所要寻找的。...注册完成后,请在使用Fluwx前在对应平台添加如下代码: Android上:FluwxShareHandler.setWXApi(wxapi) iOS上:isWeChatRegistered = YES...;注意:尽管可以通过Fluwx完成微信注册,但一些操作依然需要在对应平台进行设置,如配置iOS的URLSchema,Android上的WXEntryActivity等,否则Fluwx无法正常工作。...注意:目前分享中涉及到图片的地方仅支持png和jpg,支持网络图片及assets图片。 使用assets图片需要添加assets://。 也可以在assets图片添加?...分享去处 绝大部分分享可以分享到会话,朋友圈,收藏(小程序目前只能分享到会话)。

    4.5K10

    腾讯云IM Flutter-原生混合开发方案接入实践

    通过阅读本文,你可以了解在您现有的 Android / iOS 原生开发项目中,集成腾讯云IM Flutter 的方法。有的时候,使用Flutter重写您现有的应用程序是不现实的。...图片在Android和iOS上添加多个Flutter引擎,主要基于一个FlutterEngineGroup类(Android API、iOS API)来构造并管理多个FlutterEngine(Flutter...该页面也是Flutter Chat模块的首页。在Demo中,该页面在未登录前为加载状态,登录后展示会话列表。...Demo代码的逻辑是,使用新的路由,承载Chat的ViewController;Call的ViewController,通过present和dismiss动态弹窗维护。...Native初始化并登录以 iOS Swift 代码为例,演示如何在 Native 层,初始化并登录。

    9.4K50

    TIMSDK 常见问题

    1) 退群后删除会话保留消息可以使用 deleteConversation(); 2) 退群后删除会话和消息可以使用 deleteConversationAndMessages(); 3) 退群后保留会话和消息无需做其他操作...私有群 (Private) 和在线成员广播大群 (BChatRoom) 是只有 APP 管理员方可解散群组; 通过云通信控制台或使用 APP管理员帐号使用 rest api 可解散群组; 15.TIMGroupMemberInfo.nameCard...通过注册 TIMUserStatusListener 可以监听到两种状态回调 onForceOffline() 被踢下线的通知回调 onUserSigExpired() 用户登录使用的 userSig...创建一个用户帐号有三种方式: 1) 通过 "控制台->开发者辅助工具" 填写 identifier,密钥来生成一个用户帐号,由于方法不可批量,建议在测试环境下使用此方法,如果需要测试 rest api,...暂不支持统计所有 identifier,可以在客户端用户注册帐号成功后将用户信息一并写入 SQL 中进行管理或查询 4.如何进行游客登录?

    6.6K102

    如何在Ubuntu 14.04上安装和使用BaasBox

    由于所有这些功能都是通过标准HTTP REST API公开的,因此Web和移动应用程序的开发人员可以使用BaasBox作为后端来存储数据。...您可以通过管理控制台或REST API在BaasBox中创建用户。通常,您将使用REST API以编程方式创建用户,例如通过应用程序的用户注册过程。 通过管理控制台添加用户时,可以为其设置自定义角色。...第五步 - 使用REST API 现在我们知道如何使用管理控制台执行各种任务,让我们看看如何使用BaasBox的REST API执行相同的任务。...使用REST API记录用户 现在我们有了会话ID user2,让我们为之前在管理控制台中创建的用户获取一个user1。我们将通过user1使用REST API 登录来完成此操作。...结论 在本文中,我们了解了如何使用BaasBox使用管理控制台和使用REST API来管理内容,用户和权限。除了本文中介绍的主题之外,BaasBox还提供了更多功能。

    1.4K00

    关于 REST API 和 SOAP,你知道多少?

    背景 通过上篇文章 关于 REST API,你了解多少?,我们知道REST API是在Web应用程序的发展过程中产生的。...它可以提高应用程序的互操作性、灵活性和可伸缩性,从而为用户提供更好的体验。那么 REST API 和 SOAP 有什么区别呢?...因此,在上述的例子中,如果使用 REST API,服务器不会维护客户端的会话状态,而是在每个请求中包含足够的信息,以便服务器可以理解该请求。...因此,REST API 通常是无状态的,服务端不需要维护客户端的状态信息。 总的来说,SOAP 和 REST 在状态管理方面的区别主要是由它们所采用的协议和架构风格所决定的。...在建立 TCP 连接之前,客户端需要通过 DNS 解析获取服务器的 IP 地址,然后使用服务器的 IP 地址和端口号来建立 TCP 连接。

    37300

    从零开始的Flutter之旅: MethodChannel

    在flutter_github有这么一个场景:通过authorization认证方式进行登录。...而authorization的具体登录形式是,通过跳转一个网页链接进行github授权登录,成功之后会携带对应的code到指定客户端中,然后客户端可以通过这个code来进行oauth授权登录,成功之后客户端可以拿到该账户的...首先我们需要一个OAuth App用来提供用户通过github授权的应用。 这个在github上可以直接注册的 ?...至此Android与IOS都与Flutter建立了通信,它们之间的桥梁就是通过MethodChannel来搭建的。...token的获取与相关接口的调用可以通过查看flutter_github源码获取 flutter_github flutter_github,这是一个基于Github Open Api开发的Flutter

    1.6K50

    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发

    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter...,我们做的首页是一个register_screen注册首页,因此我们建立 register_screen.dart文件,然后我们要把main.dart入口文件的内容和注册页面的内容分开,因此把main文件中只保留入口文件应该有的内容...这里是如何利用 widgets 目录来自定义和复用组件的示例。widgets 目录的作用widgets 目录通常用于存放自定义的小部件,这些小部件可能在应用的多个地方使用。...通过将自定义组件集中在一个目录下,可以方便地管理和查找它们。...在需要使用的地方导入和使用该组件。

    62900

    说说web应用程序中的用户认证

    那么问题来了,使用 Django Rest Framework 框架实现后端 REST API 时,如何做好用户认证呢?...3、SessionAuthentication 此身份验证方案使用 Django 的默认会话后端进行身份验证。会话身份验证适用于在与您的网站相同的会话上下文中运行的 AJAX 客户端。...其实不然,这里我推荐使用: JSON Web Token,也就是 django-rest-framework-jwt 安全加密功夫做得比较足,而且工作原理也清楚明了,使用也简单。...适合用于向 Web 应用传递一些非敏感信息,经常用于设计用户认证和授权系统,实现 Web 应用的单点登录。...JWT 可以使用 HMAC 算法或者是 RSA 的公钥密钥对进行签名。 JWT 使用方法: 首先,前端通过 Web 表单将自己的用户名和密码发送到后端的接口。

    3.4K20

    Livy:基于Apache Spark的REST服务

    两种处理交互方式虽然看起来完全不一样,但是都需要用户登录到Gateway节点上通过脚本启动Spark进程。这样的方式会有什么问题吗? 首先将资源的使用和故障发生的可能性集中到了这些Gateway节点。...我们接下来看看如何使用交互式会话。 创建交互式会话 POST /sessions ? 使用交互式会话的前提是需要先创建会话。...当然Livy交互式会话还提供许多不同的REST API来操作会话和代码,在这就不一一赘述了。...表1就是使用Spark API所编写PI程序与使用Livy API所编写的程序的比较。 ?...失败恢复 由于Livy服务端是单点,所有的操作都需要通过Livy转发到Spark集群中,如何确保Livy服务端失效的时候已创建的所有会话不受影响,同时Livy服务端恢复过来后能够与已有的会话重新连接以继续使用

    4.4K80

    Salesforce Integration 概览(五) Remote Call-In(远程操作 外部->salesforce)

    问题和考虑因素 问题: 远程系统如何与Salesforce连接并进行身份验证,以通知Salesforce外部事件、创建记录和更新现有记录?...在使用SOAP API的地方,这是必需的,为此提供了预定义的WSDL。 是否需要进行transaction处理? 对Salesforce定制的容忍程度如何?...•安全执行SOAP API的客户端必须具有有效的登录名,并获得会话以执行任何API调用。API尊重Salesforce中基于登录用户配置文件配置的对象级和字段级安全性。...它的优点包括易于集成和开发,是与移动应用程序和web应用程序配合使用的最佳选择。 •安全执行REST API的客户端必须具有有效的登录名,并获得会话以执行任何API调用。...在任何一种情况下,客户机都必须使用适当的值设置授权HTTP头(OAuth访问令牌或会话ID可以通过对soapapi的登录调用获得)。

    3.9K20

    为 Flask 应用添加用户登录

    Flask 是一个 Web 框架,在服务端需要实现的用户登录主要有两种方式,一个是通过网页登录,另一个是通过 API 登录。这里将带你实现这两种方式的用户登录。...网页中的用户登录实现 在 Flask 中网页的用户登录,主要通过 Flask-Login 扩展来完成, 通过 Flask-Login 可以实现以下功能: 存储会话中活动用户的 ID,并允许你随意登入登出...,可以通过用户名和密码来实现用户的验证,但是你会发现所有的 url 你还是可以在没有登录的状态下访问,那么如何使需要登录的 url 处于保护状态呢?...API 中的用户登录实现 REST API 是通过 API 来访问服务端数据,服务端返回的数据通常是 JSON 格式,API 的用户登录实现我们通过 flaskhttpauth 来完成。...API 来获取 token ,以后访问 API 可以直接携带 token 无需使用用户名和密码进行登录。

    2K20

    「 Flutter 项目实战 」设计企业级项目入口 main.dart 设计与实现 ( GSYGithubApp 源码解读·二 )

    - runZoned 在 Flutter 中,还无法捕获的异常,如调用空对象方法异常、Futurer 中的异常等 同样,对于在 Dart 中的同步异常和异步异常,同步异常可以通过 try/catch 捕获...如Flutter SDK 中正是通过 InheritedWidget 来共享应用主题(Theme)和 Locale (当前语言环境)信息的。...,但是如果数据很简单,或者不涉及 UI 那么使用 InheritedWidget 更简单一些也就比较适合 这里如果是还不会使用 flutter_redux 的同学可以先看这篇文章 「 flutter...必知必会 」最强数据管理方案 flutter_redux 使用解析 OK,那么一个企业级项目的 main.dart 木块中该如何使用 flutter_redux 呢?...’,如果用户没登录,自然不用再往后了,按照 app 设计的逻辑,这时需要先跳转登录才行 2.4.5 全局注册 在 _HomePageState 的 build 方法中, 配置 store 方便后续使用

    1.4K21

    快速上手JHipster (Java Hipster)创建应用

    该JHipster注册表是用来管理你在运行应用程序的开源工具。 当使用微服务架构时这是必需的(这就是为什么这个问题只在生成巨石时才被问到)。...API首先使用swagger-codegen进行开发 通过将Swagger-Codegen集成到构建中,此选项允许您为应用程序进行API优先开发。...使用Hazelcast进行群集HTTP会话 默认情况下,JHipster仅使用HTTP会话来存储Spring Security的身份验证和授权信息。当然,您可以选择将更多数据放入HTTP会话中。...如果您在群集中运行,使用HTTP会话会导致问题,特别是如果您没有将负载均衡器用于“粘性会话”。如果您想在集群内复制会话,请选择此选项以配置Hazelcast。...使用Spring Websocket的WebSockets Websocket可以使用Spring Websocket来启用。我们还提供了一个完整的示例,向您展示如何高效地使用框架。

    8.4K190

    「 Flutter 项目实战 」设计企业级项目入口 main.dart 设计与实现 ( GSYGithubApp 源码解读·二 )

    - runZoned 在 Flutter 中,还无法捕获的异常,如调用空对象方法异常、Futurer 中的异常等 同样,对于在 Dart 中的同步异常和异步异常,同步异常可以通过 try/catch 捕获...如Flutter SDK 中正是通过 InheritedWidget 来共享应用主题(Theme)和 Locale (当前语言环境)信息的。...,但是如果数据很简单,或者不涉及 UI 那么使用 InheritedWidget 更简单一些也就比较适合 这里如果是还不会使用 flutter_redux 的同学可以先看这篇文章 「 flutter...必知必会 」最强数据管理方案 flutter_redux 使用解析 OK,那么一个企业级项目的 main.dart 木块中该如何使用 flutter_redux 呢?...’,如果用户没登录,自然不用再往后了,按照 app 设计的逻辑,这时需要先跳转登录才行 2.4.5 全局注册 在 _HomePageState 的 build 方法中, 配置 store 方便后续使用

    1.3K31

    API协议设计的10种技术

    API协议包含了一组规则和标准,用于定义不同系统之间如何进行通信和共享数据。它们充当了不同应用程序之间的桥梁,使它们能够相互理解和交流。...REST API 支持本地 HTTP 缓存头,并使用 HTTP 方法(POST、 GET、 PUT、 PATCH 和 DELETE)来操作数据。...任何人都可以很容易地开始使用 REST,很简单,而且学习曲线平滑。它还具有良好的可读性和可维护性,因为其使用标准的HTTP方法和状态码来表示不同的操作结果。 然而,RESTful API也有一些限制。...当不完全理解客户端如何使用 API 时,也可以使用 GraphQL。使用 GraphQL,不需要事先定义一个严格的契约。相反,可以根据客户端反馈逐步构建 API。 3....使用 Webhooks 时,一个应用程序(服务提供者)通常会提供一个注册接口,让另一个应用程序(服务消费者)注册感兴趣的事件。

    1.3K10
    领券