但是,我也曾遇到过一些让 REST 蒙羞的 API 例子,错误使用 HTTP 状态码、纯文本响应、不一致的模式、插入端点中动词......因此我决定写篇文章分享一下,在设计 REST API 时的最佳实践。以下是关于设计优秀REST API 的一些建议、提示和指导,帮助您让消费者(以及开发人员)满意。 1....在处理应用程序/编程客户端(例如,通过Python中的requests库与您的API交互的另一个服务/API)时,这一点尤为重要——其中一些客户端依赖于此标头来准确解码响应。 3....我个人建议使用查询字符串参数直接过滤books资源: GET: /books?author=Cagan 这显然意味着:“获取所有名为Cagan 的作者所写的书”,对吧。 9....有一天,当我将REST API集成到我的一个项目中时,每次调用都收到HTTP 500内部错误。
你是否曾因为代理服务器配置不当而遭遇403错误代码?或是在测试API时收到未授权访问错误?这些常见的客户端错误不仅令人头疼,还会影响工作效率。...它允许开发者发送 HTTP 请求并处理响应,从而轻松与网络资源进行交互。通过 Requests 库,用户可以构建 RESTful API,获取网页内容,进行数据采集等操作。...处理403错误代码 当用户配置代理并尝试访问某些资源时,可能会遇到403错误代码,这通常表示请求被拒绝,因而造成了访问错误。引起此类错误的原因有很多,但通常与权限设置有关。...理解如何处理此类错误是构建网络应用的关键部分,尤其是与 APi 接口交互时。用户可以通过查看服务器的响应信息,了解更详细的错误状态,并采取相应的解决措施。...用户应仔细观察 API 返回的信息,以确认所有设置均已生效。 诊断和解决代理问题 常见的代理错误及其原因 在使用代理时,用户可能会遇到多种错误,其中403 Unauthorized 是最常见的一种。
另一种选择是使用Token Introspection规范来构建 API 来验证访问令牌。...过期令牌 如果您的服务使用短期访问令牌和长期刷新令牌,那么您需要确保在应用程序使用过期令牌发出请求时返回正确的错误响应。...返回带有标头的 HTTP 401 响应,WWW-Authenticate如下所述。如果您的 API 通常返回 JSON 响应,那么您也可以返回具有相同错误信息的 JSON 正文。...错误代码和未经授权的访问 如果访问令牌不允许访问所请求的资源,或者如果请求中没有访问令牌,则服务器必须使用 HTTP 401 响应进行回复,并在响应中包含一个标头WWW-Authenticate。...“scope”值允许资源服务器指示访问资源所需的范围列表,因此应用程序可以在启动授权流程时向用户请求适当的范围。根据发生的错误类型,响应还应包括适当的“错误”值。
1.Web API接口 接口:规定了提交请求参数的请求方式、访问其可以获取相应的反馈数据的url链接,四部分:url链接 + 请求方式 + 请求参数 + 响应数据。.../books - get请求:获取所有书 https://api.baidu.com/books/1 - get请求:获取主键为1的书 post:新增单个或多个资源 https://api.baidu.com...://api.baidu.com/books/1 - put请求:整体修改主键为1的书,完成单改,返回单个结果对象 https://api.baidu.com/books/ 整体修改多个数据,提供多个数据字典的数字...多删,提供多个资源主键数据,完成群删,不做任何资源返回(一般我们会返回结果信息:成功|失败) https://api.baidu.com/books/(pk)/ 2.2响应状态码 网络状态码和网络状态信息捆绑出现...响应状态码4xx 403:请求无权限 404:请求路径不存在 405:请求方法不存在 2.2.4 服务器异常 响应状态码5xx 500:服务器异常 2.3 响应结果 2.3.1 响应数据要有状态码、
最近几年REST API越来越流行,特别是随着微服务的概念被广泛接受和应用,很多Web Service都使用了REST API。...这样的API,不仅没体现出REST API的优势,反而搞成“四不像”,增加了开发维护成本。 如何理解REST 要规范使用RESTful架构,首先要理解什么是REST。...301(Moved Permanently):表示资源的URI已永久性更改,需要在响应内容中获取新的URI。...302(Moved Temporarily):表示资源的URI已临时性更改,需要在响应内容中获取新的URI。 400(Bad Request):表示请求有问题,如参数错误等。...又如,查询某个地图资源,地图资源的表述中如果包含了各方向的相邻地图资源,则当客户端的鼠标移到屏幕边缘时,就可以获取到该方向上的地图资源了;或者地图资源的表述中包含景点、餐馆等资源URI,则可以进行相应的操作
1.2 Response(响应) drf 提供了一个响应类Response,使用该类构造响应对象时,响应的具体数据内容会被转换(render渲染)成符合前端需求的类型。...json渲染器 # renderer_classes=[BrowsableAPIRenderer,] # 配置使用浏览API渲染器 在全局配置使用,即对所有的视图类、所有的请求都生效。...参数说明: data: 为响应准备的序列化处理后的数据; status: 状态码,默认200; template_name: 模板名称,如果使用HTMLRenderer 时需指明; headers: 用于存放响应头信息的字典...例如使用APIView简单的实现五个增删查改的API接口。...3.2 action 在视图集中,我们可以通过action对象属性来获取当前请求视图集时的action动作是哪个。除了默认的方法动作外,还可以添加自定义动作。
有许多情况可能导致 Web 服务器响应具有特定错误代码的请求——我们将介绍常见的潜在原因和解决方案。...一般故障排除提示 使用 Web 浏览器测试 Web 服务器时,更改服务器后刷新浏览器 检查服务器日志以获取有关服务器如何处理请求的更多详细信息。...清除浏览器的缓存和 cookie 可以解决这个问题 由于浏览器故障导致请求格式错误 手动形成 HTTP 请求时由于人为错误导致的畸形请求(例如使用curl不正确) 401 未授权 401 状态代码或Unauthorized...文件权限 当运行 Web 服务器进程的用户没有足够的权限读取正在访问的文件时,通常会发生 403 错误。...(通常是有意为之)是使用 .htaccess文件。
当nginx发生内部错误时,比如说404、403、500等错误,默认会跳转到nginx自带的错误页面。但是使用error_page指令可以修改默认错误页面,并且可以指定跳转的url或者文件路径。...location, location 中的if字段 使用举例跳转到指定页面其原理是响应到错误代码后,导向指定的路由,然后再由指定的路由处理,如下当错误代码是404时,相当于访问http://localhost...50x.html; location = /50x.html { root /usr/share/nginx/html; }跳转到指定网址其原理是响应到错误代码后...,302(临时重定向到目标网址),如下当错误代码为404时,导向https://www.csdn.net error_page 404 403 500 https://www.csdn.net...= 和不加 = 的区别,加了 = 表示响应为指定的 http status code ,默认为 200,不加 = 为原错误的状态码~# 这样可以访问错误页面时 http status 为 404 ,并且页面内容是
但在使用 GraphQL 时,你可以使用查询语法定义所需信息的结构,然后通过单个 API 请求就可以获取所需的信息。...与书籍相关的其他信息通过 Google Books API 获得。...这个示例使用 MySQL 数据库和 Google Books API 作为数据源 这个示例的所有源代码都可以在 Github 上找到。...在创建所需的记录之前,需要分析一下根据指定 ISBN 从 Google Books API 获取的的 JSON 响应消息的格式。它返回一个 JSON 对象,其中包含了一个“items”的数组。...你可以看到这里的一些评级是“null”,因为 Google Books API 调用返回的一些 JSON 响应没有包含这些信息。
最常见的错误: 404–找不到文件或者目录不存在 403–找不到默认首页 505–服务器内部错误 信息提示(这些状态代码表示临时的响应。...客户端在收到常规响应之前,应准备接收一个或多个1xx响应): 100–继续 101–切换协议 成功(这类状态代码表明服务器成功地接受了客户端请求): 200–确定(客户端请求已成功) 201–已创建...401.5–ISAPI/CGI应用程序授权失败 401.7–访问被Web服务器上的URL授权策略拒绝(这个错误代码为IIS6.0所专用) 403–禁止访问(IIS定义了许多不同的403错误,它们指明更为具体的错误原因...这个错误代码为IIS6.0所专用 500.100–内部ASP错误 501–页眉值指定了未实现的配置 502–Web服务器用作网关或代理服务器时收到了无效响应 502.1–CGI应用程序超时 502.2...这个错误代码为IIS6.0所专用 504–网关超时 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明转载自:网站服务器错误代码介绍
理论上来说,任何人都可以在5分钟内快速启动一个数据API。无论是Node.js、Golang,还是Python。 我们将探索构建RESTful API时应该考虑的13个最佳实践。...对于这种情况,RESTful API也有一个解决方案: GET api.com/authors/3/books 最后,假如想为ID为3的作者删除ID为5的图书,该怎么办呢?...因此,你会调用以下端点:GET api.com/authors 。 当你阅读请求时,你无法判断API响应将只包含一个或所有作者。出于这个原因,API端点应该使用复数资源。...通常,API的版本号被纳入API的URL中,比如:api.com/v1/authors/3/books。 通过HTTP头发送元数据 HTTP头允许客户在其请求中发送额外的信息。...此外,还返回了一个内部错误代码,以便开发人员查找具体的错误。这允许开发人员快速查找有关该错误的更多信息。 选择正确的API框架 许多框架存在于不同的编程语言中。
Facebook、GitHub、Google 以及其他许多巨头都需要一种服务和消费数据的方式。在当今的开发环境中,RESTful API 仍然是服务和消费数据的最佳选择之一。...我们将探讨在构建 RESTful API 时应考虑的 13 种最佳实践。但首先,让我们快速阐明 RESTful API。 什么是 RESTful API?...因此,你将调用以下端点:GET api.com/authors。 当你读取请求时,你无法判断 API 响应是否只包含一个或所有作者。因此,API 端点应该使用复数资源。...通常,API 的版本号包含在 API URL 中,例如:api.com/v1/authors/3/books。 8.通过 HTTP 标头发送元数据 HTTP 标头允许客户端随其请求发送其他信息。...此外,还返回内部错误代码,供开发人员查找特定错误,这使开发人员可以快速查找有关该错误的更多信息。
使用你喜欢的文本编辑器打开 main.py 编写如下代码。..._open() 上面程序主要功能是实现日志按天分割的功能,这个功能可以让我们更加方便的定位应用在使用过程中出现的问题。 统一的接口响应 我们这个项目是前后端分离的应用,通过接口进行前后端通信的。...接口的返回信息(响应)需要统一格式,这包含接口出错时的信息。为了实现这一目标,我们需要自己封装一个统一的接口响应方法。...= { "http_code": 404, "code": "notFound", "message": "Resource not found" } FORBIDDEN_403.../author') from app.books import books_bp app.register_blueprint(books_bp,url_prefix='/api/books
@Api 作用在类上,用来标注该类具体实现内容。表示标识这个类是swagger的资源 参数: tags:可以使用tags()允许您为操作设置多个标签的属性,而不是使用该属性。...@ApiOperation(value = "获取图书信息", notes = "获取图书信息", response = Book.class...(id); } @ApiResponse 用于方法,描述操作的可能响应。...ApiResponse(code = 500, message = "2001:因输入数据问题导致的报错"), @ApiResponse(code = 500, message = "403...@ResponseHeader 响应头设置,使用方法。
api.baidu.com/books | api.baidu.com/books/(pk) 5) 请求方式有多种,用一个url处理如何保证不混乱 - 通过请求方式标识操作资源的方式.../books get 获取所有 /books post 增加一个(多个) /books/(pk) delete 删除一个...api.baidu.com/books/?.../api/ API很简单 版本: URL,如:https://api.example.com/v1/ 请求头,跨域时,引发发送多次请求 路径,视网络上任何东西都是资源,均使用名词表示...403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
_tcp.cluster0-on1ek.mongodb.net 以上正是我在链接 MongoDB Alats 过程中遇到的问题,这里再多提下,希望能对你有帮助,因为这花费了我很长时间,尝试使用 Google...API 的设计要保证职责单一、清晰合理、便于他人快速理解使用等原则,而 REST 也是 API 设计的一种准则,同时它也是一种架构思想,用于客户端与服务端资源传递与交互。...以下是我们将要完成的 REST API 规划,包含四个 CRUD 操作 CRUD API Routes Description POST /books 增加一本书 GET /books 获取所有书籍列表...这个错误是因为你已经定义了一个 Schema,之后又重复定义该 Scheme 导致的,错误代码如下所示: module.exports = mongoose.model('Books', BooksSchema...); 编写业务逻辑 Books 将业务逻辑处理放在 Books 这个类里面,并且可以不依赖于外部的任何服务,this.BooksModel 这个在测试时可以模拟数据进行传入。
Key 时获得的秘钥(API SECRET),下面的签名结果采用 3600d0a74aa3410fb3b1996cca2419c8 作为示例, 对得到的结果使用秘钥进行 HMAC-SHA1 签名,并对二进制结果进行...() 响应结果如下: { "status": 0, "data": 1523430502977 } 此 API 用于获取服务器时间。...获取 ticker 数据 为了使得 ticker 信息组足够小和快, 我们强制使用了列表格式....order_id 订单 ID 订单错误代码 错误代码 含义解释 2000 账户错误 错误代码 错误代码 含义解释 400 Bad Request — 错误的请求 401 Unauthorized...— API key 或者签名,时间戳有误 403 Forbidden — 禁止访问 404 Not Found — 未找到请求的资源 405 Method Not Allowed — 使用的 HTTP
本文将介绍如何设计易于理解和使用的 API,并且借助 Docker api 的实践说明。...没有统一的规定,但是我们通常操作的数据多数是一个集合,比如 GET /books ,所以我们就使用复数。...统一规范,建议都使用复数 URL, 比如 获取 id = 2 的书 GET /books/2 要好于 GET /book/2。...一般来说,API 不会向用户透露服务器的详细信息,所以只要两个状态码就够了。 500 Internal Server Error:客户端请求有效,服务器处理时发生了意外。...服务器响应 3.1 不要返回纯文本 API 返回的数据格式,不应该是纯文本,而应该是一个 JSON 对象,因为这样才能返回标准的结构化数据。
jQuery.get() 使用一个HTTP GET 请求从服务器加载数据。 ...ifModified 类型:Boolean 默认为false 仅在服务器数据改变时获取新数据。 ... 3 - (交互)正在解析响应内容 4 - (完成)响应内容解析完成,可以在客户端调用了 XMLHttpRequest.status: 1xx-信息提示 这些状态代码表示临时的响应...这个错误代码为IIS6.0所专用。 403-禁止访问:IIS定义了许多不同的403错误,它们指明更为具体的错误原因: 403.1-执行访问被禁止。...502-Web服务器用作网关或代理服务器时收到了无效响应。 502.1-CGI应用程序超时。 502.2-CGI应用程序出错。application. 503-服务不可用。
API 管理 API 通过 API 管理发布 API 在开发人员门户中可见 API 只能通过 API 管理网关访问 请求 API 时强制执行速率限制 对 API 进行更改时会自动维护规范 针对标准规范的每次更改验证端点规范...规范包含请求和响应的模式 请求和响应模式和示例经过格式验证,示例通过模式验证 URI API 使用 HTTPS(或在特殊情况下使用其他带加密的无状态协议) 在组织的官方域下发布的 API 可见域与其他...主版本在 URI 中(仅当 API 管理平台不支持基于客户端订阅的版本控制时) API 使用无状态处理(无会话,OpenID 连接令牌是可以的) 没有特殊处理(异步事件) HTTP 方法 GET -...HTTP 状态码 404 用于错误的 URL 400 -responses 有特定错误的附加信息(例如缺少必需的属性) 当 API 使用者使用错误的凭证时使用 401 -response 403 使用有效但请求...API 使用者无法访问的端点或尝试使用他们不允许执行的操作 500 - 当存在 API 使用者无法通过更改请求来解决的内部处理问题时响应 500 -responses 具有特定于应用程序的错误代码
领取专属 10元无门槛券
手把手带您无忧上云