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

创建 REST API 的最佳入门教程

view,创建create,编辑edit和删除delete)都可以直接映射到HTTP 中已实现的GET,POST,PUT和DELETE方法。...HTTP 中的8中不同的方法: GET POST PUT DELETE OPTIONS HEAD TRACE CONNECT 大多数情况下,当你在使用你的浏览器的点点看看的时候,其实只用到HTTP的GET...但是,如果是供我们使用的话,就没什么问题。问题是我们有很多要选择去帮助描述这四大行为的HTTP方法,我们将会用到那些已经知道如何去使用这些不同的HTTP方法客户端类库。...,但是超过两层嵌套不是很好的方法了。...用这个API,就可以使用seesion会话保存用户记录,但这毕竟不是最好的方法。有时候,用户想直接访问API,或是用户想自己授权其他应用程序去访问这个API。 解决方法是在认证的基础上使用秘钥。

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

设计 API 的 22 条最佳实践,实用!

让动词远离你的资源URL 不要在URL中使用动词来表达你的意图。相反,使用适当的HTTP方法来描述操作。...对CRUD函数使用HTTP方法 HTTP方法用于解释CRUD功能。 GET:检索资源的表示形式。 POST:创建新的资源和子资源。 PUT:更新现有资源。...PUT /shops/2/products/31:应该更新产品31的信息,只在resource-URL上使用PUT不是集合。...错误 当客户端向服务发出无效或不正确的请求,或向服务传递无效或不正确的数据,服务拒绝该请求时,就会出现错误,或者更具体地说,出现服务错误。...当由于一个或多个服务错误拒绝客户端请求时,一定要返回4xx HTTP错误代码。 考虑处理所有属性,然后在单个响应中返回多个验证问题。 22.

1.2K10

Restful API 接口规范详解

该数据可用于 GET、PUTPOST 和 DELETE 数据类型,这些数据类型是指有关资源的操作的读取、更新、创建和删除。注意:RESTful是一种风格不是标准。...HTTP方法 使用RESTful风格的接口,从接口上可能只能定位其资源,但是无法知晓它具体进行了什么操作,需要具体了解其发生了什么操作动作要从其HTTP请求方法类型上进行判断。...具体的HTTP方法方法含义如下:GET(SELECT):从服务器取出资源(一项或多项)。POST(CREATE):在服务器新建一个资源。...1、使用 HTTP Method 动词来表达操作 操作应该使用 HTTP 动词来表达,例如 GET(获取资源)、POST(创建资源)、PUT(更新资源)、DELETE(删除资源) 等,以确保对资源的操作被明确表示和限制...id=10002、使用名词来表示资源 在URI中使用名词来表示资源,不是动词,以避免歧义和混淆。对于表示资源集合的URI,通常使用复数形式,以便明确表示这是一个集合不是单个资源。

5.4K11

REST API 最佳实践

这是因为 HTTP 方法,例如 GET、POSTPUT、PATCH 和 DELETE,已经以动词形式执行基本的 CRUD(创建、读取、更新、删除)操作。...你应该避免超过 3 层的嵌套,因为这可能使 API 不那么优雅,降低可读性。 4.用 HTTP 方法操作资源 使用 URL 指定你要用的资源。使用 HTTP 方法来指定怎么处理这个资源。...使用五种 HTTP 方法 POST,GET,PUT/PATCH,DELETE 可以提供 CRUD 功能(创建,获取,更新,删除)。 除了 POST 其他请求都具备幂等性(多次请求的效果相同)。...而是执行一个操作并将结果返回给客户端。因此,您应该在URL中使用动词不是名词,来清楚的区分资源请求和非资源请求。 9.考虑特定资源搜索和跨资源搜索 提供对特定资源的搜索很容易。...注意,点赞文章我选择了 PUT 不是 POST,因为我觉得点赞这种行为应该是幂等的,多次操作的结果应该相同。 4.FAQ 批量删除接口如何设计?

1.6K20

RESTful API 最佳实践

例子:在HTTP使用GET方法通常用于从服务器获取资源,无论调用多少次产生的额外效果都是从服务器获取资源,所以GET具有幂等性;POST方法通常用于提交数据在服务器上创建一个资源,由于最终创建的结果每次都是不同的...,所以POST不具有幂等性;但是PUT方法却是幂等的,因为每次调用产生的效果都是对资源进行更新。...Response 采用JSON,不要使用XML 默认情况下JSON外层不需要嵌套大括号,API需要支持JSONP跨域访问或者客户端无法访问HTTP Header才需要加上嵌套大括号 默认情况下不要过滤API...X-Rate-Limit-Reset:当前时间段剩余秒数 为什么使用当前时间段剩余秒数不是时间戳?...HTTP规范里面有三种date格式,服务器应该都能处理。 7.覆盖HTTP方法 一些HTTP客户端只支持GET和POST请求。为了能够加强这些客户端的访问能力,API需要能够覆盖HTTP方法

1.9K31

HTTP API 设计指南HTTP API 设计指南

我们一直试图找出一种良好的、一致的、显而易见的 API 设计方法不是所谓的"最终/理想模式"。...我们假设你熟悉基本的 HTTP+JSON API 设计方法,所以本篇指南并不包含所有的 API 设计基础。...请求(Requests) 在请求的body体使用JSON格式数据 在 PUT/PATCH/POST 请求的正文(request bodies)中使用JSON格式数据,不是使用 form 表单形式的数据...好的响应应该使用如下的状态码: 200: GET请求成功,及DELETE或PATCH同步请求完成,或者PUT同步更新一个已存在的资源 201: POST 同步请求完成,或者PUT同步创建一个新的资源...202: POSTPUT,DELETE,或PATCH请求接收,将被异步处理 206: GET 请求成功,但是只返回一部分,参考:上文中范围分页 使用身份认证(authentication)和授权

2.3K31

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

总的来说,HTTP协议出现以来Web服务也就存在了。但是,自从云计算出现后,才成为实现客户端与服务和数据交互的普遍方法。 作为一名开发者,我很幸运能够在工作中使用一些仍然存在的SOAP服务。...(操作或方法):最常见的是GET、POSTPUT、PATCH和DELETE。...例如,如果你选择某个POST端点返回201 Created,那么对于每个POST端点都应使用相同的HTTP状态码。为什么?因为消费者不应该担心在哪种情况下哪个方法在哪个端点上会返回哪个状态码。...而且扁平化总比嵌套好,所以肯定有更好的方法... 确实如此!我个人建议使用查询字符串参数直接过滤books资源: GET: /books?...这种方法的问题在于,通常情况下,框架并不是针对构建REST API服务器而设计的。例如,Flask和Express都是两个非常灵活的框架,但它们并没有专门为帮助您构建REST API制定。

35840

​你回去了解一下RESTful风格

接口应该使用标准的HTTP方法如GET,PUTPOST,并遵循这些方法的语义。...GET、HEAD、PUT和DELETE请求都是幂等的,无论对资源操作多少次, 结果总是一样的,后面的请求并不会产生比第一次更多的影响。...我认为,这是因为rails默认使用服务端生成的ID作为URI的缘故,不少人就是通过rails实践REST的,所以很容易造成这种误解。 客户端不一定都支持这些HTTP方法吧?...统一资源接口要求使用标准的HTTP方法对资源进行操作,所以URI只应该来表示资源的名称,不应该包括资源的操作。 通俗来说,URI不应该使用动作来描述。...资源在外界的具体呈现,可以有多种表述(或成为表现、表示)形式,在客户端和服务端之间传送的也是资源的表述,不是资源本身。

80710

13 个设计 REST API 的最佳实践

但是,就 REST API 设计本身而言,所涉及到的 HTTP 知识要点大概包含以下几条: HTTP 中包含动词(或方法): GET、POSTPUT、PATCH 还有 DELETE 是最常用的。...在业务领域,我们常常可以将动词和 CRUD(增删查改)关联起来:GET 代表查,POST代表增,PUT 和 PATCH 代表改(注: PUT 通常代表整体更新, PATCH 代表局部更新), DELETE...这里有一篇文章,详细阐述了扁平化形式优于嵌套形式,因此一定有更好的方法,这就是下面的第二种方案: GET: /articles/?...某天,我在将某个 API 端点集成到项目中,但是我总是收到 500 Internal Error 的错误,我调用的端点差不多看起来这样: POST: /entities ``` 调试一段时间之后...Python 开发者可能马上掏出了 Flask, JS 开发者也不甘示弱,祭出了 Express,他们会使用实现一些简单的 routes 来处理 HTTP 请求。

3.5K20

RESTful API教程:学习关键的Web服务设计原则

只要将wins的数目以文本格式返回即可,所有客户端都可以轻松地使用该结果,不管它们是否可以解析JSON。...如果设计人员想要从服务器中删除资源,他们应该使用HTTP DELETE方法。如果需要创建新资源或需要更新现有资源,则应使用PUT方法PUT和DELETE方法对于保存和删除数据来说是相对简单的。...这就引出了第二条规则:HTTP方法要具备幂等性。 如果某件事是幂等的,意味着它可以重复进行,但结果总是一样的。 例如,假设客户端发出RESTful DELETE请求删除编号为271的记录。...保守的使用RESTful API设计的瑞士军刀:POST方法 我们已经知道,从数据库中删除10条最老的记录是对DELETE方法的错误使用简单的数字增量则是PUT方法的糟糕应用,这是否意味着我们不能用...当然不是。 目前为止,我们建立了两个非常重要的规则: GET调用不能更改资源的状态。 PUT和DELETE方法必须是幂等的。 但是请注意,我们还没有提到POST方法

1.8K10

PUTPOST的区别

PUTPOSTHTTP 协议中两种常用的请求方法。它们有些相似之处,但也有一些重要的区别。在本文中,我们将详细介绍 PUTPOST 的区别。...PUT 请求 PUT 请求是 HTTP 协议中的一种请求方法,通常用于更新或替换服务器上的资源。使用 PUT 请求时,客户端需要将整个资源的新版本发送到服务器。...客户端发送的数据不同:PUT 请求需要客户端发送完整的资源内容, POST 请求可以只发送部分资源内容。... POST 请求不是安全的,它可能会导致状态的改变。 可缓存性不同:PUT 请求是可缓存的,客户端可以使用缓存的响应来更新资源。 POST 请求不是可缓存的,客户端不能使用缓存的响应来更新资源。...除了 PUTPOSTHTTP 协议还定义了其他的请求方法,比如 GET、DELETE、OPTIONS 等。每种请求方法都有自己的语义和应用场景,在使用时需要仔细考虑。

1K10

我所理解的RESTful Web API

至于其它4中HTTP方法POSTPUT、PATCH和DELETE),它们旨在针对目标资源作添加、修改和删除操作。对于DELETE,它的语义很明确,就是删除一个已经存在的资源。...比如我们分别发送PUTPOST请求以添加一个员工,标识员工的URI由其员工ID来决定。如果员工ID由客户端来指定,我们可以发送PUT请求;如果员工ID由服务端生成,我们一般发送POST请求。...至于最后一种POST,由于它总是进行添加操作,如果服务器接收到两次相同的POST操作,将导致两个相同的资源被创建,所以这是一个非幂等的方法。...在这种情况下,如果接收到一个基于数据修改的PUT请求,我们总是会用提交数据去覆盖现有的数据,并将当前服务端时间(客户端时间不可靠)作为字段LastUpdatedTime的值,这实际上也破坏了幂等性。...其实这是没有问题的,URI是资源的唯一标识,但不是其“唯一的唯一标识“,相同的资源可以具有多个标识。 七、无状态性 RESTful只要维护资源的状态,不需要维护客户端的状态。

1K70

前端要知道的RESTful API架构风格

前端程序员在开发完页面后总是要对接口的,跟后端联调有时候还占用蛮大的时间的,那么你了解你和后端对的接口都是什么风格吗,你们公司接口设计的如何,你使用愉快吗?...RESTful API 设计最佳实践 请求设计规范 URI 使用名词,尽量用复数,如/users URI 使用嵌套标识关联关系,如 /users/12/repos/5 使用正确的HTTP方法,如GET/...POST/PUT/DELETE 不符合 CRUD 的情况:POST/action/子资源 响应设计规范 查询。...POST(CREATE):在服务器新建一个资源。 PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。 PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。...用HTTP方法对资源进行增删改查的操作。 用HTTP状态码传达执行结果和失败原因。 为集合提供过滤、排序、分页等功能。 用查询字符串或HTTP首部进行内容协商,指定返回结果的数据格式。

87730

HTTP 请求方法

(统计用途除外) Http的请求方法代表了客户端想对服务器进行的操作,比如:POST、GET、HEAD、PUT、DELETE、TRACE、OPTIONS。 常用的不过于CRUD四个。...安全的方法除了 GET 之外还有:HEAD、OPTIONS。 不安全的方法除了 POST 之外还有 PUT、DELETE。 幂等性:GET是幂等性,POST不是幂等性。...在正确实现的条件下,GET,HEAD,PUT,OPTIONS 和 DELETE 等方法都是幂等的, POST 方法不是。...与POST区别在于:POST用于向服务器发送数据,PUT用于向服务器储存数据。 它自身不带验证机制,导致任何人都可以上传文件,有很大的安全问题,一般不使用方法。...当客户端不清楚对资源操作的方法,可以使用这个请求询问服务器该资源支持的请求方法,在响应字段allow中返回,比如:Allow: GET, POST, HEAD。它只可以在HTTP 1.1中使用

1.3K10

【愚公系列】2022年04月 Python教学课程 65-DRF框架之请求和响应

该对象的核心功能是属性,它类似于 ,但对于使用 Web API 更有用。 request.POST # 只处理表单数据。仅适用于"POST"方法。 request.data # 处理任意数据。...适用于"POST"、"PUT"和"PATCH"方法。 2.响应对象 REST 框架还引入了一个对象,该对象是一种获取未渲染内容并使用内容协商来确定要返回给客户端的正确内容类型。...return Response(data) # 根据客户端的请求呈现为内容类型。 3.状态码 在视图中使用数字 HTTP 状态代码并不总是能带来明显的阅读效果,如果错误代码出错,也很容易不注意到。...最好始终使用这些标识符,不是使用数字标识符。...Content-Type # POST using form data http --form POST http://127.0.0.1:8000/snippets/ code="print(123)

61930

RFC2616-HTTP1.1-Methods(方法规定部分—译文)

这允许用户代理以特殊的方式来表示其他方法,例如POSTPUT和DELATE,从而使用户意识到该请求可能存在不安全的动作的事实。   ...然而,多个请求的队列可能是非幂等的,尽管执行请求中的所有方法本身都是幂等的(如果一个序列的单次执行总是会产生一个结果,并且该结果并不会因该序列的部分或全部重新执行改变,那么该序列就是幂等的)。...此方法允许客户端确定与资源或服务器功能相关的选项和(或)需求,不涉及资源操作或启动资源检索。对该方法的响应是不能缓存的。   ...如果请求的URI是一个“*”号,那么OPTIONS请求往往用于服务器不是一个指定的资源。...部分GET方法旨在完成对实体的部分检索不传输客户端已经存在的数据来减少不必要的网络请求。   当且仅当它满足第13节中所描述的有关HTTP缓存的要求时,对GET请求的响应是可以被缓存的。

36030

RFC2616-HTTP1.1-Methods(方法规定部分—译文)

这允许用户代理以特殊的方式来表示其他方法,例如POSTPUT和DELATE,从而使用户意识到该请求可能存在不安全的动作的事实。   ...然而,多个请求的队列可能是非幂等的,尽管执行请求中的所有方法本身都是幂等的(如果一个序列的单次执行总是会产生一个结果,并且该结果并不会因该序列的部分或全部重新执行改变,那么该序列就是幂等的)。...此方法允许客户端确定与资源或服务器功能相关的选项和(或)需求,不涉及资源操作或启动资源检索。对该方法的响应是不能缓存的。   ...如果请求的URI是一个“*”号,那么OPTIONS请求往往用于服务器不是一个指定的资源。...部分GET方法旨在完成对实体的部分检索不传输客户端已经存在的数据来减少不必要的网络请求。   当且仅当它满足第13节中所描述的有关HTTP缓存的要求时,对GET请求的响应是可以被缓存的。

53120
领券