Mozilla Developer Network文档上关于HTTP概述是一个相当全面的参考资料,尽管如此,在REST API设计方面,以下是将HTTP应用于RESTful设计的简要说明: HTTP具有动词...我将注意到:param 是一个URI参数(如ID或缩写)的占位符,你第一个想法可能是创建类似于这个的端点: GET: /books/:slug/generateBookCover/ 但是,在这里GET方法在语法上足以说明我们正在获取...有一天,当我将REST API集成到我的一个项目中时,每次调用都收到HTTP 500内部错误。...如果资源以某种方式已经存在,但这不应被视为错误。 13. 使用专门针对REST API的网络框架 作为最后一个最佳实践,让我们讨论这个问题:如何在您的API中实际应用最佳实践?...、Browsers...)的 API 开发测试工具,支持 REST、Websocket、gRPC、TCP、UDP、SOAP等协议。
5xx – 500-599范围内的响应表示服务器遇到错误。 什么是REST API?...REST(表示性传输状态)是用于使用HTTP协议开发Web服务的轻量级选项,这一事实使其比使用SOAP协议的Web服务更简单,开销也更少。当API遵循REST体系结构时,它称为REST API。...URI语法允许您指定一个查询,该查询从REST API返回所需的信息。REST系统的主要元素是: 资源是客户端请求从主机获取的信息,例如网页或数据库记录。 资源标识符是用于命名资源的URI。...REST API测试(如何创建REST API测试) 什么是JSON JSON代表JavaScript Object Notation,并且被设计为轻量级的数据交换格式。...JSON无疑变得越来越流行,并且在某些情况下正在取代XML进行API数据交换。www.json.org网站描述了如何在两种结构上构建JSON: “ 名称/值对的集合。
了解应用于 REST 之上的 HTTP 知识 如果你想要构建设计优良的 REST API,了解一些关于 HTTP 协议的基础知识是很有帮助的,毕竟磨刀不误砍材工。...,我几乎崩溃了,因为我根本不知道我哪里做错了,直到我发现服务器之所以报 500 的错误,是因为我粗心丢掉了尾部斜杠(注:这种经历人人都会遇到,我在 SF 上遇过无数次类似的问题),当我把 URI 改成:...采用 REST API 定制化的框架 作为最后一个最佳实践,让我们来探讨这样一个问题:你如何在 API 的实施中,实践最佳实践呢?...通常的情况是这样的,你想要快速创建一个 API 以便一些服务可以互相访问彼此。...但这样做的问题是,通常,web 框架并不是针对构建 REST API 服务而专门存在的,换言之,Flask 和 Express 是两个十分通用的框架,但它们并非特别适合用于构建 REST API 服务。
从本质上讲,API调用是一个软件应用向另一个软件应用发送的请求,要求获取数据或执行特定操作。可以将其比作一座桥梁,使不同的软件能够通信并共享资源。...GET 请求 GET请求是最常见的API调用类型,用于从服务器获取数据。例如,当你访问一个在线书店并查看书籍列表时,你的浏览器向服务器发送一个GET请求,服务器则返回书籍详情。...示例: GET /api/books/12345 HTTP/1.1 2. POST 请求 POST请求用于向服务器发送数据,以创建或更新资源。...GraphQL 查询 GraphQL是一种API查询语言,允许客户端请求精确所需的数据,从而减少数据传输量。与REST API不同,多个获取请求可以合并为一个GraphQL查询。...500 Internal Server Error:服务器遇到错误。 数据格式 JSON:轻量级、可读性强,广泛使用。 XML:较旧的API使用,冗长但结构清晰。
)(发布在官方 Keras.io 博客上)是一个简单的 Keras +深度学习 REST API,用于没有并发请求的单线程。...base64 编码,另一个用于解码。...如果你遇到任何问题,请务必参考下一节…… 提示:如果遇到麻烦,请监控 Apache 错误日志 多年来,我一直在使用 Python + Web 框架(如 Flask 和 Django),却仍然在正确配置环境的过程中犯错误...使用错误日志来帮助你在服务器上创建并运行 Flask。 启动你的深度学习模型服务器 你的 Apache 服务器应该已经在运行了。...对你的深度学习 REST API 进行压力测试 当然,这只是一个例子。让我们来压力测试我们的深度学习 REST API。
英文全称:Representational State Transfer中文意思:表现层状态转换REST是客户端应用程序(也就是前端),使用 HTTP 协议与 Web 服务(后端)交互以创建、删除、更新和删除数据...如何使用REST API?HTTP 动词REST API 通过各种 HTTP 请求方法,使前端与服务器的通信过程更容易,最常用的方法是:GET : 用于读取服务器上的数据。POST : 用于创建数据。...2xxs:成功,请求成功完成3xxs:重定向,收到的请求重定向到另一个地址。4xxs:客户端错误,例如,404 - 找不到页面。5xxs:服务器错误,请求失败。...一些常见的 HTTP 状态代码包括:200:成功的请求,通常是 GET201:创建后请求成功,通常是 POST204:请求成功,没有返回内容,通常是 PUT 或 PATCH301:永久重定向到另一个端点...500:服务器错误,一般性,值得查看其他 500 级错误503:服务不可用,另一个重试标头有用总结REST是一种软件架构风格,用于 Web 架构的设计,任何遵循 REST 设计原则的 API都被称为 RESTful
PermissionDenied 在每种情况下,REST 框架都将返回具有适当状态代码和内容类型的响应。响应的正文将包含有关错误性质的任何其他详细信息。 大多数错误响应将在响应正文中包含一个键。...detail 例如,以下请求: DELETE http://api.example.com/foo/bar HTTP/1.1 Accept: application/json 可能会收到一个错误响应,指示该资源上不允许使用该方法...二、自定义异常 您可以通过创建一个处理程序函数来实现自定义异常处理,该函数将 API 视图中引发的异常转换为响应对象。这允许您控制 API 使用的错误响应样式。...该函数必须采用一对参数,第一个是要处理的异常,第二个是包含任何额外上下文(如当前正在处理的视图)的字典。异常处理程序函数应返回对象,如果无法处理异常,则应返回。...如果处理程序返回,则将重新引发异常,Django将返回标准的HTTP 500“服务器错误”响应。
如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。...虽然REST本身受Web技术的影响很深, 但是理论上REST架构风格并不是绑定在HTTP上,只不过目前HTTP是唯一与REST相关的实例。 1....对第三点的实现稍微多说一点: Java 服务器端一般用异常表示 RESTful API 的错误。API 可能抛出两类异常:业务异常和非业务异常。...; Response Body 的错误码:异常类名 Response Body 的错误描述:对业务类异常,用它指定的错误文本;对非业务类异常,线上可以统一文案如“服务器端错误,请稍后再试”,开发或测试环境中用异常的...如: 按关键字搜索; 1.计算地球上两点间的距离; 2.批量向用户推送消息 3.可以把这些服务看成资源,计算的结果是资源的presentation,按服务属性选择合适的HTTP方法。
Douglas Lopes 在 Unsplash 上 在过去的几年里,我一直听到 GraphQL——一种用于 API 的查询语言,允许客户端请求特定数据——是 API 的未来。...这些代码——包括从 404(未找到)到 500(内部服务器错误)的所有内容——使诊断问题和构建自动解决问题的错误处理流程变得容易。...例如,如果您收到 429 太多请求错误,您可以根据响应中建议的等待时间创建自动重试。 另一方面,GraphQL 要求您的工程师考虑错误键中提供的响应。...除了 OpenAPI 之外,您还可以访问各种开源工具来 管理 REST API 开发的各个方面,包括验证、安全、监控和测试。...Postman 非常适合测试 REST API;OpenAPI 允许您自动生成 API 文档;REST 框架(例如 Django REST Framework)是为特定 编程语言 构建的,并提供帮助您高效构建
二、RESTFul设计风格 1、Rest与RestFul REST(英文:Representational State Transfer,简称REST),表述性状态转移,指的是一组架构原则。...2、API设计六要素 资源路径(URI)、HTTP动词(Method)、过滤信息(query-string)、状态码(Status-code)、错误信息(Error)、返回结果(Result) ?...acceptable)- 服务端不支持所需表示 500 (internal server error)- 通用错误响应 503 (Service Unavailable)- 服务端当前无法处理请求...media type)- 接受到的表示不受支持 500 (internal server error)- 通用错误响应 503 (Service Unavailable)- 服务当前无法处理请求...RESTFul 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。
引言 Web API 已经在最近几年变成重要的话题,一个干净的 API 设计对于后端系统是非常重要的。...上面说了这么多,下面让我们看一下如何在 Koa 中践行RESTful API最佳实践吧。...koa自带错误处理 要执行自定义错误处理逻辑,如集中式日志记录,您可以添加一个 “error” 事件侦听器: app.on('error', err => { log.error('server...具体使用方式可以参考https://www.npmjs.com/package/jsonwebtoken 实战 初始化项目 mkdir rest_node_api # 创建文件目录 cd rest_node_api...在这里主要是以用户模块的crud为例来展示下如何在 koa 中践行RESTful API最佳实践。
实际上在工作中对api接口规范、命名规则、返回值、授权验证等进行一定的约束,一般的项目api只要易测试、足够安全、风格一致可读性强、没有歧义调用方便我觉得已经足够了,接口是给开发人员看的,也不是给普通用户去调用...message——当状态值为”fail”和”error”时有效,用于显示错误信息。参照国际化(il8n)标准,它可以包含信息号或者编码,可以只包含其中一个,或者同时包含并用分隔符隔开。...POST 新增一条数据 201创建成功、422新增数据验证错误、(401、403、404、406、500) DELETE 删除一条数据 204删除成功、(401、403、404、406、500) PATCH...URL上看,参数众多、调用起来还得一个一个仔细对着,而且API本身非常不容易维护,命名看起来不是很容易,不能太长,也不能太随意。...order_amount_greater=500&sort=order_amount_desc&age_min=22&age_max=40 这种属性路由比如在博客园开放的API也有这方面的应用,如获取个人博客随笔列表
Server提供的RESTful API中,URL中只使用名词来指定资源,原则上不使用动词。“资源”是REST架构或者说整个网络处理的核心。...比如最常用的 200 表示成功,500 表示Server内部错误等。 ? 1、REST 是面向资源的,这个概念非常重要,而资源是通过 URI 进行暴露。...比如:左边是错误的设计,而右边是正确的 GET /rest/api/getDogs --> GET /rest/api/dogs 获取所有小狗狗 GET /rest/api/addDogs --> POST.../rest/api/dogs 添加一个小狗狗 GET /rest/api/editDogs/:dog_id --> PUT /rest/api/dogs/:dog_id 修改一个小狗狗 GET /...rest/api/deleteDogs/:dog_id --> DELETE /rest/api/dogs/:dog_id 删除一个小狗狗 2、REST很好地利用了HTTP本身就有的一些特征,如HTTP
在这篇文章中,我将带你了解创建 REST API 时需要遵循的一些最佳实践。这将帮助你创建最好的 API,并使你的 API 用户使用起来更容易。 0.什么是 REST API?...创建:使用 POST 创建新的资源(非幂等)。 更新:使用 PUT 更新整个资源,PATCH 将部分修改应用于资源。PUT 和 PATCH 都是幂等的。...表示永久移动 4XX 客户端错误,如 400 表示错误的请求,404 表示未找到资源 5XX 服务器端错误,如 500 表示内部服务器错误 13.提供有用的错误消息 除了提供恰当的HTTP状态代码外...文档应包含: API 的相关端点 端点的示例请求 在几种编程语言中的实现 不同错误的消息列表及其状态代码 你可以用于 API 文档的最常用工具是 Swagger。...你也可以使用 Postman 来记录你的 API,这是软件开发中最常见的 API 测试工具。 17.使用 SSL 保障安全 SSL 指的是安全套接层。这对于 REST API 设计的安全性至关重要。
今天本文将介绍如何在 springboot 项目中实践 GrapQL API....(仅用于存储数据) H2 数据库。 定义一个 GraphQL 模型 接下来为一个简单查询 API 定义一个 GraphQL 模型。 type Person { id: Int!...启用 GraphiQL UI 为了调试 GraphQL 请求,Spring Boot GraphQL 提供了一个已经内置的 GraphiQL UI,我们可以使用它来测试我们的 API。...,一个用于创建一个人,一个用于创建一个地址。...每个错误都有一个错误消息、一个路径和一个查询中发生错误的位置,指示哪个字段导致了错误。 出现错误时,默认程序返回上述值。 我们可以通过创建自己的错误处理程序解析器来自定义返回错误的方式。
服务端错误测试点:依赖服务不可用:模拟数据库连接失败或第三方 API 超时,返回 503 Service Unavailable 或 500 Internal Server Error。...正确的 HTTP 状态码遵循 REST 规范:4xx:客户端错误(如 400, 401, 404)。5xx:服务端错误(如 500, 503)。c....pytest + requests:编写自动化测试脚本。JMeter:模拟高并发下的错误场景。断言设计:验证状态码、错误码、错误消息、响应时间。检查响应头(如 Retry-After 用于限流场景)。...五、典型错误响应测试用例示例参数错误类测试用例1:必填参数缺失接口:POST /api/users(创建用户)场景:未提供必填字段email输入:{"name": "Alice"}预期响应:状态码:400...8:数据格式错误接口:POST /api/events(创建事件)场景:start_time字段格式非法(如"2023-13-01T10:00:00Z")输入:{"name": "Meeting", "
POST:用于创建新资源。 PUT:用于更新现有资源。 DELETE:用于删除资源。...常见的状态码包括200(成功)、201(已创建)、404(未找到)、500(服务器错误)等。 数据格式:RESTful API通常使用JSON或XML等标准数据格式来传递数据。...安全性:RESTful API可以使用标准的HTTP安全机制(如HTTPS)来保护通信,同时可以使用认证和授权机制来限制访问资源的权限。...使用方法:与@Controller类似,您需要将这个注解放在一个类的前面,以表明这个类是一个REST控制器。...示例 非thymeleaf示例实现 下面是一个示例,演示了如何在Spring控制器中使用这些注解: @RestController @RequestMapping("/api") public class
设计概念和准则 网络上的所有事物都可以被抽象为资源 每一个资源都有唯一的资源标识,对资源的操作不会改变这些标识 所有的操作都是无状态的(本次操作、下次操作、上次操作之间无关系) 资源:网络上的一个实体、...状态码:当客户端发送一个请求时,服务端应当响应什么状态码 错误处理:如当发现客户端传入的参数有问题时,该返回什么样的状态信息。...401 Unauthorized 表示用户没有认证,无法进行当前操作 403 Forbidden 表示用户的访问是被禁止的 422 Unprocesable Entity 当创建一个对象时,发生一个验证错误...例如创建用户资源时需要用户名、密码,而前端只提供用户名字段,那么就要返回一个422 状态码,并返回错误信息:”密码不能为空“ 500 INTERNAL SERVER ERROR 服务器内部错误,此时服务端无法处理任何请求...204状态码和空响应体 DHC Client 用于测试API 安装DHC 谷歌浏览器插件: 名为: 基于REST的Web服务客户端 先下载: http://chromecj.com/web-development
还可以将文档规范导入相关的工具(例如 SoapUI), 这些工具将会为我们自动地创建自动化测试。...2.1 创建一个Spring Boot项目 您可以通过 Spring Initializr 页面生成一个空的 Spring Boot 项目,当然也可以下载 springboot-pom.xml 文件,.../test/test:测试接口。 下面我们将通过集成 Swagger2,然后为这 5 个 Rest API 自动生成接口文档。...@Api(tags = "用户相关接口", description = "提供用户相关的 Rest API") public class UserController 通过在接口方法上增加 @ApiOperation...5.2 接口过滤 有些时候我们并不是希望所有的 Rest API 都呈现在文档上,这种情况下 Swagger2 提供给我们了两种方式配置,一种是基于 @ApiIgnore 注解,另一种是在 Docket
很多系统只是号称是REST API,实际上并没有满足REST的架构约束条件。...POST方法创建资源的URI由服务器决定,如:POST http://www.example.com/Fielding/books,创建了一个book资源,资源的URI为http://www.example.com...而POST http://www.example.com/Fielding/books/123,则是在ID为123的book资源下创建一个某类别资源,如书的评论等,评论的URI也会包含一个服务器生成的ID...500(Internal Server Error):通用内部错误。 502(Bad Gateway):网关错误,从上游服务器收到无效响应。...5) 返回内容 REST API的返回内容应该是资源的表述。 前面说过,同一个资源可以有多种不同格式的表述,如json格式和xml格式,所以返回内容应该是自描述的。