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

RESTful API 最佳实践

翻译过来大意就是如果方法调用一次和多次产生额外的效果是相同的,它就具有幂等性。...,所以POST不具有幂等性;但是PUT方法却是幂等的,因为每次调用产生的效果都是对资源进行更新。...7.覆盖HTTP方法 一些HTTP客户端只支持GET和POST请求。为了能够加强这些客户端的访问能力,API需要能够覆盖HTTP方法。...错误的表现形式应该跟其他资源保持一致,只是用一些自己的字段。 API应该一直返回合理的HTTP状态码。API错误一般情况下分成两类:代表客户端错误的400系列状态码和代表服务端错误的500系列状态码。...details about the error here"} 对于PUT、PATCH和POST的请求进行的校验错误需要嵌套多个字段。

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

    flask 应用程序编程接口(API)最后一节

    Fielding和其他REST纯粹主义者对评判一个API是否是REST API有严格的规定,但软件行业在实际使用中引用REST是很常见的。...另外,我还需要确保username和email串联尚未被其他用户使用,因此我尝试使用获得的用户名和电子邮件从数据库中加载用户,如果返回了有效的用户,那么我也将返回错误给客户端。...API中没有HTML或登录页面的概念,如果客户端发送带有无效或所有权凭证的请求,服务器必须拒绝请求并返回401状态码。...保存在g.current_user中,盔甲我可以从API视图函数中访问它。 错误处理函数只返回由app / api / errors.py模块中的error_response()函数生成的401错误。...在API蓝图中的API可能返回的许多错误可以被重写为JSON版本,但是仍然有一些错误是由Flask处理的,处理这些错误的处理函数是被大量注册到应用中的,返回的是HTML。

    5K10

    RESTful API

    举例来说,有一个API提供动物园(zoo)的信息,还包括各种动物和雇员的信息,则它的路径应该设计成下面这样。...zoo_id=ID 的含义是相同的。 7、状态码(status codes) 服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词)。...400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。...401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。...8、错误处理(Error handling) 如果状态码是4xx,就应该向用户返回出错信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可。

    1.6K20

    Yii2.0 RESTful API 认证教程

    sessions 或 cookies 维护, 常用的做法是每个请求都发送一个秘密的 access token 来认证用户, 由于 access token 可以唯一识别和认证用户,API 请求应通过...ok,不出意外的话,相信你已经可以收到一个access_token了,接下来就是如何使用这个token,如何维持认证状态,达到不携带这个token将无法访问,返回401 维持认证状态 实现认证只需两步:.../youdomain/articles,不携带任何参数是不是返回 401了?...上面的格式本章并不存在,你只要返回 401 即可 ok,这里介绍两种访问方式,一种是URL访问,另一种是通过header 来进行携带 http://youdomain/articles?...魏曦老师 学的 魏曦教你学 写完认证发现我们的接口返回的数据不是很直观,现实生活中通常也不是这样子的,我们可能会返回一些特定的格式 自定义响应内容 打开 api\config\main.php 在 components

    1.6K30

    Spring Boot 使用 JWT 进行身份和权限验证

    /** * @author shuang.kou * 如果用户名和密码正确,那么过滤器将创建一个JWT Token 并在HTTP Response 的header中返回它,格式:token: "Bearer...,它会检查 HTTP 请求是否存在带有正确令牌的 Authorization 标头并验证 token 的有效性。...当用户使用系统返回的 token 信息进行登录的时候 ,会首先经过doFilterInternal()方法,这个方法会从请求的 Header 中取出 token 信息,然后判断 token 信息是否为空以及...implements AccessDeniedHandler { /** * 当用户尝试访问需要权限才能的REST资源而权限不足的时候, * 将调用此方法发送401响应以及错误信息...将调用此方法发送401响应以及错误信息 */ @Override public void commence(HttpServletRequest request,

    3.5K70

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

    实际上在工作中对api接口规范、命名规则、返回值、授权验证等进行一定的约束,一般的项目api只要易测试、足够安全、风格一致可读性强、没有歧义调用方便我觉得已经足够了,接口是给开发人员看的,也不是给普通用户去调用...3.统一的接口 这个才是REST架构的核心,统一的接口对于RESTful服务非常重要。客户端只需要关注实现接口就可以,接口的可读性加强,使用人员方便调用。...4.一致的数据格式 服务端返回的数据格式要么是XML、要么是Json(获取数据),或者直接返回状态码,有兴趣的可以看看博客园的开放平台的操作数据的api,post、put、patch都是返回的一个状态码...HTTP Method 详细解释 返回状态码 GET 获取对象或集合 200成功、401没有授权、403访问禁止、404没有资源、参数错误、406请求格式不正确、410资源被删除、500服务器内部错误...POST 新增一条数据 201创建成功、422新增数据验证错误、(401、403、404、406、500) DELETE 删除一条数据 204删除成功、(401、403、404、406、500) PATCH

    1.3K30

    Django rest framework源码分析(1)----认证

    方法-->dispatch方法(反射执行其它方法:GET/POST/PUT/DELETE等等) 二、简单实例 2.1.settings 先创建一个project和一个app(我这里命名为API) 首先要在...如果用户名和密码正确的话  会生成token值,下次该用户再登录时,token的值就会更新  数据库中可以看到token的值 ? 当用户名或密码错误时,抛出异常 ?..._not_authenticated() 返回值就是例子中的: token_obj.user-->>request.user token_obj-->>request.auth #在rest framework...',] #里面写你的认证的类的路径 } auth.py # API/utils/auth.py from rest_framework import exceptions from API import...,返回的响应头 pass 4.2.修改自己写的认证类 自己写的Authentication必须继承内置认证类BaseAuthentication # API/utils/auth/py

    2.1K122

    赏心悦目的RESTful API这样来设计!

    我们来了解一下 如何设计和开发一个高可用的 REST APIs 网上一直有关于"最好的Restful API的设计"争论,何为最好,至今没有一个官方的指导。...和 POST这两种方法。...这是一个很错误的观念,RESTful 的设计理念之一是简单直观,试想一下,前端开发人员打开开发者工具,所有请求都是200的状态码,但是页面数据就是没有显示出来,难道前端开发人员还要每个接口调用点开看一看...) 4xx 状态码 4xx 状态码表示客户端的错误,主要有以下几种: 400BadRequest:服务器不理解客户端的请求,未做任何处理 401Unauthorized:用户未提供身份验证凭据,或者没有通过身份验证...比如,API 只能返回 JSON 格式,但是客户端要求返回 XML 格式 这里要注意状态码 401 和 403 的区别 5xx 状态码 5xx 状态码表示服务端错误,通常只会用到两个: 500InternalServerError

    1.4K10

    如何设计好的RESTful API

    我们来了解一下 如何设计和开发一个高可用的 REST APIs 网上一直有关于"最好的Restful API的设计"争论,何为最好,至今没有一个官方的指导。...和 POST这两种方法。...这是一个很错误的观念,RESTful 的设计理念之一是简单直观,试想一下,前端开发人员打开开发者工具,所有请求都是200的状态码,但是页面数据就是没有显示出来,难道前端开发人员还要每个接口调用点开看一看...) 4xx 状态码 4xx 状态码表示客户端的错误,主要有以下几种: 400BadRequest:服务器不理解客户端的请求,未做任何处理 401Unauthorized:用户未提供身份验证凭据,或者没有通过身份验证...比如,API 只能返回 JSON 格式,但是客户端要求返回 XML 格式 这里要注意状态码 401 和 403 的区别 5xx 状态码 5xx 状态码表示服务端错误,通常只会用到两个: 500InternalServerError

    1.7K20

    5个REST API安全准则

    现实情况是,任何人都可以调用您的Web服务,所以假设每秒执行上百次失败的输入验证的人是没有好处的。考虑将API限制为每小时或每天一定数量的请求,以防止滥用。...当设计REST API时,不要只使用200成功或404错误。 以下是每个REST API状态返回代码要考虑的一些指南。 正确的错误处理可以帮助验证传入的请求,并更好地识别潜在的安全风险。...200 OK -回应一个成功的REST API的行动。HTTP方法可以是GET,POST,PUT,PATCH或DELETE。 400错误请求 -请求格式错误,如消息正文格式错误。...429太多的请求 -可能存在的DOS攻击检测或由于速率限制的请求被拒绝 (1)401和403 401“未授权”的真正含义未经身份验证的,“需要有效凭据才能作出回应。”...遵循这些准则将导致更安全和高质量的REST API服务和更多的开发人员友好的REST API。

    3.8K10

    13 个设计 REST API 的最佳实践

    在响应中返回错误详情 当 API 服务器处理错误时,如果能够在返回的 JSON body 中包含错误信息,对于接口调用者来说,会一定程度上帮助他们完成调试。...你可能知道,HTTP 中你可以返回带有 200 状态码的错误响应,但这是十分糟糕的。不要这么做,你应当返回与返回错误类型相一致的具有一定含义的状态码。...比如,如果一个 POST 类型的端点返回 201 Created,那么所有的 POST 端点都应返回同样的状态码。这样做的好处在于,调用者无需在意端点返回的状态码取决于某种特殊条件,也就形成了一致性。...某天,我在将某个 API 端点集成到项目中,但是我总是收到 500 Internal Error 的错误,我调用的端点差不多看起来这样: POST: /entities ``` 调试一段时间之后...分清 401 和 403 当我们遇到 API 中关于安全的错误提示时,很容易混淆这两个不同类型的错误,认证和授权(比如权限相关)—— 老实讲,我自己也经常搞混。

    3.6K20

    FastAPI(58)- 使用 OAuth2PasswordBearer 的简单栗子

    ", port=8080) 代码解析 OAuth2 旨在使后端或 API 可以独立于对用户进行身份验证的服务器 但在这种情况下,同一个 FastAPI 应用程序将同时处理 API 和身份验证 前端请求.../items 的之前要先进行身份验证,也就是用户名和密码,这个验证的路径就是 tokenUrl,是相对路径,POST请求 oauth2_scheme 中接收一个 str 类型的 token,就是当验证通过后...Bearer token,它会返回 401 状态码( UNAUTHORIZED ) 传递 token 的请求结果 目前因为没有对 token 做验证,所以 token 传什么值都可以验证通过 看看...bearer 它应该有一个 access_token,一个包含访问 token 的字符串 对于上面简单的例子,返回的 token 是用户名,这是不安全,只是作为栗子好理解一点 返回 401 的HTTPException...的 Header 在此处返回的带有值 Bearer 的 WWW-Authenticate Header 也是 OAuth2 规范的一部分 在 Beaer token 的情况下,该值应该是 Bearer

    2.8K40
    领券