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

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

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等协议。

1.4K40

API自动化测试指南

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: “ 名称/值对的集合。

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

    13 个设计 REST API 的最佳实践

    了解应用于 REST 之上的 HTTP 知识 如果你想要构建设计优良的 REST API,了解一些关于 HTTP 协议的基础知识是很有帮助的,毕竟磨刀不误砍材工。...,我几乎崩溃了,因为我根本不知道我哪里做错了,直到我发现服务器之所以报 500 的错误,是因为我粗心丢掉了尾部斜杠(注:这种经历人人都会遇到,我在 SF 上遇过无数次类似的问题),当我把 URI 改成:...采用 REST API 定制化的框架 作为最后一个最佳实践,让我们来探讨这样一个问题:你如何在 API 的实施中,实践最佳实践呢?...通常的情况是这样的,你想要快速创建一个 API 以便一些服务可以互相访问彼此。...但这样做的问题是,通常,web 框架并不是针对构建 REST API 服务而专门存在的,换言之,Flask 和 Express 是两个十分通用的框架,但它们并非特别适合用于构建 REST API 服务。

    3.9K20

    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使用,冗长但结构清晰。

    28710

    教程 | 如何使用Keras、Redis、Flask和Apache把深度学习模型部署到生产环境?

    )(发布在官方 Keras.io 博客上)是一个简单的 Keras +深度学习 REST API,用于没有并发请求的单线程。...base64 编码,另一个用于解码。...如果你遇到任何问题,请务必参考下一节…… 提示:如果遇到麻烦,请监控 Apache 错误日志 多年来,我一直在使用 Python + Web 框架(如 Flask 和 Django),却仍然在正确配置环境的过程中犯错误...使用错误日志来帮助你在服务器上创建并运行 Flask。 启动你的深度学习模型服务器 你的 Apache 服务器应该已经在运行了。...对你的深度学习 REST API 进行压力测试 当然,这只是一个例子。让我们来压力测试我们的深度学习 REST API。

    4.2K110

    什么是RESTful,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

    1.3K30

    【愚公系列】2022年04月 Python教学课程 77-DRF框架之异常

    PermissionDenied 在每种情况下,REST 框架都将返回具有适当状态代码和内容类型的响应。响应的正文将包含有关错误性质的任何其他详细信息。 大多数错误响应将在响应正文中包含一个键。...detail 例如,以下请求: DELETE http://api.example.com/foo/bar HTTP/1.1 Accept: application/json 可能会收到一个错误响应,指示该资源上不允许使用该方法...二、自定义异常 您可以通过创建一个处理程序函数来实现自定义异常处理,该函数将 API 视图中引发的异常转换为响应对象。这允许您控制 API 使用的错误响应样式。...该函数必须采用一对参数,第一个是要处理的异常,第二个是包含任何额外上下文(如当前正在处理的视图)的字典。异常处理程序函数应返回对象,如果无法处理异常,则应返回。...如果处理程序返回,则将重新引发异常,Django将返回标准的HTTP 500“服务器错误”响应。

    1.3K40

    restful api接口规范和服务调用的区别_rest接口规范

    如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。...虽然REST本身受Web技术的影响很深, 但是理论上REST架构风格并不是绑定在HTTP上,只不过目前HTTP是唯一与REST相关的实例。 1....对第三点的实现稍微多说一点: Java 服务器端一般用异常表示 RESTful API 的错误。API 可能抛出两类异常:业务异常和非业务异常。...; Response Body 的错误码:异常类名 Response Body 的错误描述:对业务类异常,用它指定的错误文本;对非业务类异常,线上可以统一文案如“服务器端错误,请稍后再试”,开发或测试环境中用异常的...如: 按关键字搜索; 1.计算地球上两点间的距离; 2.批量向用户推送消息 3.可以把这些服务看成资源,计算的结果是资源的presentation,按服务属性选择合适的HTTP方法。

    2.1K10

    REST在许多API使用场景中仍然优于GraphQL

    Douglas Lopes 在 Unsplash 上 在过去的几年里,我一直听到 GraphQL——一种用于 API 的查询语言,允许客户端请求特定数据——是 API 的未来。...这些代码——包括从 404(未找到)到 500(内部服务器错误)的所有内容——使诊断问题和构建自动解决问题的错误处理流程变得容易。...例如,如果您收到 429 太多请求错误,您可以根据响应中建议的等待时间创建自动重试。 另一方面,GraphQL 要求您的工程师考虑错误键中提供的响应。...除了 OpenAPI 之外,您还可以访问各种开源工具来 管理 REST API 开发的各个方面,包括验证、安全、监控和测试。...Postman 非常适合测试 REST API;OpenAPI 允许您自动生成 API 文档;REST 框架(例如 Django REST Framework)是为特定 编程语言 构建的,并提供帮助您高效构建

    63810

    如何设计restful风格接口

    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

    1.3K20

    我们必须要知道的RESTful服务最佳实践

    实际上在工作中对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也有这方面的应用,如获取个人博客随笔列表

    1.5K30

    REST API 最佳实践

    在这篇文章中,我将带你了解创建 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 设计的安全性至关重要。

    2.3K20

    聊一聊接口测试如何设计有效的错误响应测试用例

    服务端错误测试点:依赖服务不可用:模拟数据库连接失败或第三方 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", "

    34010

    构建强大的RESTful API:@RestController与@Controller的对比与应用

    POST:用于创建新资源。 PUT:用于更新现有资源。 DELETE:用于删除资源。...常见的状态码包括200(成功)、201(已创建)、404(未找到)、500(服务器错误)等。 数据格式:RESTful API通常使用JSON或XML等标准数据格式来传递数据。...安全性:RESTful API可以使用标准的HTTP安全机制(如HTTPS)来保护通信,同时可以使用认证和授权机制来限制访问资源的权限。...使用方法:与@Controller类似,您需要将这个注解放在一个类的前面,以表明这个类是一个REST控制器。...示例 非thymeleaf示例实现 下面是一个示例,演示了如何在Spring控制器中使用这些注解: @RestController @RequestMapping("/api") public class

    19210

    【RESTful】RESTful API 接口设计规范 | 示例

    设计概念和准则 网络上的所有事物都可以被抽象为资源 每一个资源都有唯一的资源标识,对资源的操作不会改变这些标识 所有的操作都是无状态的(本次操作、下次操作、上次操作之间无关系) 资源:网络上的一个实体、...状态码:当客户端发送一个请求时,服务端应当响应什么状态码 错误处理:如当发现客户端传入的参数有问题时,该返回什么样的状态信息。...401 Unauthorized 表示用户没有认证,无法进行当前操作 403 Forbidden 表示用户的访问是被禁止的 422 Unprocesable Entity 当创建一个对象时,发生一个验证错误...例如创建用户资源时需要用户名、密码,而前端只提供用户名字段,那么就要返回一个422 状态码,并返回错误信息:”密码不能为空“ 500 INTERNAL SERVER ERROR 服务器内部错误,此时服务端无法处理任何请求...204状态码和空响应体 DHC Client 用于测试API 安装DHC 谷歌浏览器插件: 名为: 基于REST的Web服务客户端 先下载: http://chromecj.com/web-development

    2.3K20

    那些年,我们一起误解过的REST

    很多系统只是号称是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格式,所以返回内容应该是自描述的。

    2.2K173

    走进RESTful API的世界:从设计到实现的全流程解析

    REST(Representational State Transfer)是一种架构风格,而RESTful API则是遵循这种风格的应用程序接口。...统一接口:通过统一的格式(如JSON)返回数据,便于客户端解析。RESTful API的设计原则在设计RESTful API时,以下几个原则是我们需要特别注意的:1....201 Created:创建成功。400 Bad Request:请求格式错误。404 Not Found:资源不存在。500 Internal Server Error:服务器错误。4....例如:{ "id": 1, "name": "Echo_Wish", "email": "echo@example.com"}实现一个简单的RESTful API下面,我们通过一个简单的示例,带大家一步步实现一个...项目初始化首先,创建项目并安装依赖:mkdir rest-api-example && cd rest-api-examplenpm init -ynpm install express body-parser

    54210
    领券