首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

不要返回纯文本 尽管并非强制规定,但大多数REST API通常约定使用JSON作为数据格式。然而,仅返回包含JSON格式字符串响应体是不够好。您还应该指定Content-Type标头。...在响应体中返回错误详情 当API服务器处理错误时,将错误详细信息包含在JSON主体中可以帮助使用者进行调试,这是是非常方便,如果您还能说明哪些字段受到了错误影响,那就更好了!...不要嵌套资源 您可能已经注意到,REST API处理是资源。检索资源列表或单个实例非常简单,但是,当处理相关资源时会发生什么呢?例如,假设我们想要检索特定作者(名为Cagan)书籍列表。...利用查询字符串进行筛选和分页 大多数情况下,一个简单端点无法满足各种复杂业务场景。您用户可能希望检索满足特定条件项目,或者一次只检索少量数据以提高性能,这正是过滤和分页功能所设计目标。...这种方法问题在于,通常情况下,框架并不是针对构建REST API服务器而设计。例如,Flask和Express都是两个非常灵活框架,但它们并没有专门为帮助您构建REST API而制定。

34740

REST API URI 设计七准则

在今天网站上,URI 设计范围可以清楚地传达API资源模型,如: http://api.example.com/louvre/leonardo-da-vinci/mona-lisa 到那些难以让人理解...query] ["#" fragment] 规则#1:URI中不应包含尾随斜杠(/) 这是作为 URI 路径中最后一个字符最重要规则之一,正斜杠(/)不会增加语义值,并可能导致混淆。...REST API 不应该期望有一个尾部斜杠,并且不应该将它们包含在它们提供给客户端链接中。...规则#6:文件扩展名不应包含在 URI 中 在 Web 上,字符(.)通常用于分隔 URI 文件名和扩展名。 一个 REST API 不应在 URI 中包含人造文件扩展名,来表示消息实体格式。...URI 应遵循可预测层次结构,以增强可理解性,从而提高可用性:可预测意义在于它们是一致,层次结构建立在数据具有结构关系意义上。 RESTful API 是为消费者编写

1.3K40
您找到你想要的搜索结果了吗?
是的
没有找到

Bitbucket Cloud上发布网站

您可以使用Bitbucket来托管 静态网站。静态网站包含具有固定内容编码HTML页面。...以这种方式托管网站bitbucket.io在其网址中包含域名,例如 https://tortoisehg.bitbucket.io 在Bitbucket Cloud上发布静态网站需要您将帐户名称与bitbucket.io...将index.html文件添加到存储库,提交更改,并将结果推送到Bitbucket。 导航到该 站点。例如,如果您要导航到 您个人帐户或团队名称。系统在站点中显示HTML 。...在HTML页面中包含JavaScript。 博客评论通过在您网站中嵌入Disqus。 此功能将存储库转换为纯静态Web服务器,该服务器使用存储库根作为Web根。...对于尾随斜杠Bitbucket是宽容:无论是否在URL中包含尾部斜杠,都会向请求 https://accountname.bitbucket.io/projectX/提供projectX/index.html

2.9K30

REST 和 SOAP 协议有什么区别?

举个例子一个网站会根据你搜索条件,返回航班、酒店或租车最优惠 信息。网站不会数据库中检索这些数据,而是通过向专门提供航班、酒店等服务 API 发送请求来获取数据。...对于 REST 而言,JSON 是一种轻量级数据交换格式,与浏览器高度兼容。对于 SOAP 而言,XML 是一种可扩展标记语言,允许自定义描述性标记,便于阅读。稍后将详细讨论这些数据格式。...** REST使开发人员能够更多地关注用户界面、功能和业务规则,而不是由API服务器处理服务器组件和数据管理。...* **Body(主体):** 必需部分,用于指定在提交请求后期望 API 接收哪些信息返回。此部分包括函数名(过程)和你希望传递参数,这些将影响结果。... GraphQL API 请求数据比使用 REST 更高效。使用 REST 时,有单独资源 URL(有时多达数百个)来暴露 API 功能。

6600

DevOps之代码模块设计浅析

此处不再细述第三方代码库集成方式,像Gitlab、Bitbucket等代码库管理工具都有非常完善rest api接口文档,开发人员可以参照文档挑选接口去定向开发需要集成功能。...Github Rest API官方文档: https://docs.github.com/en/rest/reference Gitlab Rest API官方文档: https://docs.gitlab.com.../ee/api/api_resources.html Bitbucket Rest API官方文档: https://developer.atlassian.com/server/bitbucket/reference.../rest-api/ 注:EnforcedServiceLoader为参照jdkServiceLoader,增强型ServiceLoader 。...以上与webhook相关功能就涉及到webhook回调接口实现了,简单来说,就是写一个供给第三方代码服务器调用DevOps服务接口,Gitlab、Github、Bitbucket官方网站有详细webhook

86920

REST API URI七大设计原则

query ][ “#” fragment ] 规则1:URI结尾不应包含(/) 这是作为URI路径中处理中最重要规则之一,正斜杠(/)不会增加语义值,且可能导致混淆。...REST API不允许一个尾部斜杠,不应该将它们包含在提供给客户端链接结尾处。...规则6:文件扩展名不应包含在URI中 在Web上,(.)字符通常用于分隔URI文件名和扩展名。 REST API不应在URI中包含人造文件扩展名,来指示邮件实体格式。...URI应遵循可预测层次结构,用来提高其可理解性,可用性:可预测意义在于它们是一致,它层次结构在数据关系上是有意义。 RESTful API是为使用者编写。...最后,望大家牢记:你在为你客户端设计API URI,而不仅仅是为你数据

1.8K60

前后端分离开发,RESTful 接口如何设计

/book 此时,服务器可能会对提交内容进行校验,创建与图书相关记录,并返回响应代码201——表示已创建新资源。...GET 请求将命名资源服务器传输到客户端。尽管客户端不需要知道请求资源内容,但是请求返回结果是带元数据标记字节流,这表明客户端应该知道如何解释资源。...还有另外三个没有广泛使用但是有价值动词。 4.5 HEAD HEAD 动词用来请求资源,但不实际检索。客户端可以通过 HEAD 检查资源是否存在,并检查资源相关数据。...它支持 Markdown 格式 API 文档,可以围绕设计过程进行社交,并且支持模拟数据托管实现,以便于在 API 实现之前对其进行测试。...虽然任何 Web 服务器都可以配置成提供 REST API,但有了这些框架、库和环境可以让过程变得更容易。

2.5K01

GraphQL 和 REST 优缺点对比,附上代码示例

主要有三个原因: 到服务器次数过多 抓取过度/抓取不足 缺乏灵活性 使用 REST Api 访问服务器次数太多 假设我们正在创建一个社交媒体应用程序。...例如,在 REST 中,您需要向 /api/posts 发送 GET 请求来获取帖子,该请求可能会返回一个 JSON 对象,其中包含帖子标题、内容、标记、日期,可能还有用户 ID。...要显示单个用户帖子,我们需要用户信息和帖子内容。如果我用户端点获取用户,我仍然需要点击 posts 端点,并使用 userid 检索 posts。...缺乏灵活性 在前一点基础上进一步扩展,REST 依赖于创建符合前端需求api。如果您能够预测前端在碰到特定端点时需要什么,就可以精确地调整检索数据,以匹配该视图。...类似地,如果你 API 被具有不同需求各种不同客户端使用,那么 REST API 灵活性将不适合您目的。 GraphQL 允许检索不同配置数据,从而提供了这种灵活性。

99930

弱网客户端福音:节省带宽利器【ETag】

3.使用 curl来验证ETag功能 一个通过客户端和服务器通信来简单地测试ETag特性操作可以分解为以下步骤: – 首先,客户端发起一个对REST API调用——响应包括了需要存储ETag头,以便进一步使用...API请求时,会使用If-None-Match头携带上一步保存ETag值;如果服务器资源没有发生变化,那么响应将不会包含任何响应体,并且返回HTTP状态码将会是304——Not Modified...;请记住,自从上次检索以来,资源已经被更新了,所以前面存储ETag值已经不能代表现在资源了——响应将包含数据和一个新ETag,这个新ETag可以被存储起来以供后续使用: curl -H "Accept...因此,一个ETag中获益请求仍然会被作为一个标准请求处理,消耗正常消耗任何资源(数据库连接等),并且只有在将它响应返回给客户端之前,ETag支持才会启动。...If-Match”头检索资源——这是一个有条件GET请求 服务器将返回一个412 未满足先决条件 6.ETag其它用武之地 我们只是使用ETag来进行读操作——这里有一个已经提交RFC试图澄清应该如何处理写操作

1.8K20

RestFul架构基础

/book 此时,服务器可能会对提交内容进行校验,创建与图书相关记录,并返回响应代码201——表示已创建新资源。...GET 请求将命名资源服务器传输到客户端。尽管客户端不需要知道请求资源内容,但是请求返回结果是带元数据标记字节流,这表明客户端应该知道如何解释资源。...还有另外三个没有广泛使用但是有价值动词。 4.5 HEAD HEAD 动词用来请求资源,但不实际检索。客户端可以通过 HEAD 检查资源是否存在,并检查资源相关数据。...它支持 Markdown 格式 API 文档,可以围绕设计过程进行社交,并且支持模拟数据托管实现,以便于在 API 实现之前对其进行测试。...虽然任何 Web 服务器都可以配置成提供 REST API,但有了这些框架、库和环境可以让过程变得更容易。

60810

RESTful 架构基础

/book 此时,服务器可能会对提交内容进行校验,创建与图书相关记录,并返回响应代码201——表示已创建新资源。...GET 请求将命名资源服务器传输到客户端。尽管客户端不需要知道请求资源内容,但是请求返回结果是带元数据标记字节流,这表明客户端应该知道如何解释资源。...还有另外三个没有广泛使用但是有价值动词。 4.5 HEAD HEAD 动词用来请求资源,但不实际检索。客户端可以通过 HEAD 检查资源是否存在,并检查资源相关数据。...它支持 Markdown 格式 API 文档,可以围绕设计过程进行社交,并且支持模拟数据托管实现,以便于在 API 实现之前对其进行测试。...虽然任何 Web 服务器都可以配置成提供 REST API,但有了这些框架、库和环境可以让过程变得更容易。

76320

RESTful 架构基础

/book 此时,服务器可能会对提交内容进行校验,创建与图书相关记录,并返回响应代码201——表示已创建新资源。...GET 请求将命名资源服务器传输到客户端。尽管客户端不需要知道请求资源内容,但是请求返回结果是带元数据标记字节流,这表明客户端应该知道如何解释资源。...还有另外三个没有广泛使用但是有价值动词。 4.5 HEAD HEAD 动词用来请求资源,但不实际检索。客户端可以通过 HEAD 检查资源是否存在,并检查资源相关数据。...它支持 Markdown 格式 API 文档,可以围绕设计过程进行社交,并且支持模拟数据托管实现,以便于在 API 实现之前对其进行测试。...虽然任何 Web 服务器都可以配置成提供 REST API,但有了这些框架、库和环境可以让过程变得更容易。

92130

13 个设计 REST API 最佳实践

但是,就 REST API 设计本身而言,所涉及到 HTTP 知识要点大概包含以下几条: HTTP 中包含动词(或方法): GET、POST、PUT、PATCH 还有 DELETE 是最常用。...不要返回纯文本 虽然返回 JSON 数据格式数据不是 REST 架构规范强制限定,但大多 REST API 都遵循这条准则。...在响应中返回错误详情 当 API 服务器处理错误时,如果能够在返回 JSON body 中包含错误信息,对于接口调用者来说,会一定程度上帮助他们完成调试。...优雅地处理尾部斜杠 一个好 URI 中是否应当包含尾部斜杠,并不具有探讨价值,选择一种更倾向风格并保持一致性即可,同时当客户端误用尾部斜杠时,提供重定向响应。 我再来讲我自己一个故事。...当然,大多数 web 框架都针对 URL 是否包含尾部斜杠,进行了优雅地处理并提供定制选项,如果可以的话,找到它并开启这项功能。 ## 10.

3.5K20

21 个好用持续集成工具,总有一款适合你

Bamboo Bamboo 是一个持续集成构建服务器,可以自动构建、测试和发布,并可与 JIRA 和 Bitbucket 无缝协作。...Gitlab CI GitLab CI 是 GitLab 一部分。它是一个提供 API Web 应用程序,可将其状态存储在数据库中。...特点: GitLab Container Registry 是安全 Docker 镜像注册表 GitLab 提供了一种方便方法来更改 issue 或 merge request 数据,而无需在注释字段中添加斜杠命令...该工具为不同插件提供支持,这些插件可修改数据库 schema 并注册HTTP路由。 特点: Strider 可与 GitHub,BitBucket,Gitlab 等集成。...特点: 专门设计用于在 Salesforce Platform 上部署 支持基于 120 多种元数据类型更改,实现精简和快速部署 版本控制系统获取更改并自动部署到 Sandbox 中 直接 Sandbox

2.5K20

ELK专栏之ES快速入门-01

● 接口简单:采用JSON形式REST API接受数据并响应,和语言无关。...简介 ElasticSearch是一个基于Lucene搜索服务器。它提供了一个分布式多用户能力全文搜索引擎,基于REST web接口。...● 全文检索、结构化检索数据分析: ○ 全文检索:搜索商品名称包含java图书select * from books where book_name like ‘%java%’。...● 接口简单:使用REST API进行交互,跨语言。 ● 功能强大:ElasticSearch作为传统数据一个补充,提供了数据库所不能提供很多功能,如全文检索、同义 词处理、相关度排名。...○ 包含一堆相似结构文档数据。 ○ 索引创建规则: ■ 仅限于小写字母。 ■ 不能包含\、/、 *、?、"、、|、#以及空格符等特殊符号。 ■ 7.0版本开始不再包含冒号。

1.6K20

jenkins 入门教程(中)

接上回继续,本文以我托管在bitbucket一个开源项目spring-boot-rest-framework做为演示,讲解如何创建自动化部署。...git地址(即:红字1位置),bitbucket是需要用户名密码才能访问,所以Credentials这里要选择相应用户名、密码(即:红字2部分),红字3部分为git获取源代码分支名称,一般为...这个很简单,bitbucket网站项目右上角里就有,见下图: 另外,红字2处对应下拉框,首次进来时,应该是空,可点击右侧Add,添加用户名,密码,见下图: 然后在Build部分,点击Add Build...只不过这一切是在UI界面完成,以后项目的Build工作就可以交由运维甚至测试人员直接来做了,程序员只管提交代码即可。...,并启动应用,我们可以事先写一个shell脚本,放在服务器上(或者参考上一步做法,用scp插件上传到服务器),脚本内容参考下面这样: #!

1.4K60

Tungsten Fabric支持API一览

Tungsten Fabric支持以下API: l用于控制器配置REST API l映射到REST配置APIPython绑定 l用于访问分析数据REST API 下面我们逐一进行描述。...配置和操作信息在称为用户可见实体(UVE)对象中进行组织,这些对象可以包含多个Tungsten Fabric组件聚合属性。...HTTP GET查询用于检索分析数据库中列表,并获取其API和schemas。 HTTP POST查询用于检索存储在表中时间序列数据。...POST查询包括SQL查询JSON格式版本,该版本指定表、字段以及要匹配条件。Analytics API包含一个附加功能,允许为检索数据指定开始时间和结束时间。...根据阈值交叉事件,Analytics API可用于为存储在分析数据库中任何时间序列配置和检索警报。 可以为分析数据库中任何UVE或警报配置服务器发送事件(SSE)流。

91310

清新优雅、功能强大后台管理模板 | 开源日报 No.238

整合多个知名 hosts 文件 去除重复条目 提供各种定制化 hosts 文件变体 可选性地包含 porn、社交媒体等分类扩展 ArchiveBox/ArchiveBoxhttps://github.com...它主要功能和核心优势包括: 免费且开源,无需在线注册,所有数据都存储在本地 强大直观命令行界面,可选模块化依赖项 提供全面文档、活跃开发和丰富社区支持 可以多种来源进行定时/实时导入,并支持标准、...耐久性长期格式如 HTML、JSON、PDF 等 可作为一次性 CLI 使用,也可以作为自托管 Web UI、Python API(BETA)、REST API(ALPHA)或桌面应用程序(ALPHA)...该项目的主要功能、关键特性、核心优势包括: 通过单个命令激活完全配置好开发环境。 在任何基础设施上设置开发环境,无论是本地、远程、云端、物理服务器还是虚拟机,支持 x86 或 ARM 架构。...还包含内置 Web IDE 带来额外便利性。 整合 Git 提供商(GitHub, GitLab & Bitbucket),方便连接并从工作区提交分支或 PR 请求等操作。

19410
领券