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

前后端分离后,RESTful API 最佳实践

GET:读取(Read) POST:新建(CreatePUT:更新(Update) PATCH:更新(Update),通常是部分更新 DELETE:删除(Delete) 根据 HTTP 规范,动词一律大写...POST /api/Person/4 HTTP/1.1 X-HTTP-Method-Override: PUT 上面代码中,X-HTTP-Method-Override指定本次请求的方法是PUT,而不是...比如,/articles这个 URL 就是正确的,而下面的 URL 不是名词,所以都是错误的。...它与302和307的含义一样,也是"暂时重定向",区别在于302和307用于GET请求,而303用于POST、PUT和DELETE请求。...400 Bad Request:服务器不理解客户端的请求,未做任何处理。 401 Unauthorized:用户未提供身份验证凭据,或者没有通过身份验证。

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

2019-05-30 如何优雅的设计RESTful API?这是我看过讲的最清晰的文章!

GET:读取(Read) POST:新建(CreatePUT:更新(Update) PATCH:更新(Update),通常是部分更新 DELETE:删除(Delete) 根据 HTTP 规范,动词一律大写...POST /api/Person/4 HTTP/1.1 X-HTTP-Method-Override: PUT 复制代码 上面代码中,X-HTTP-Method-Override 指定本次请求的方法是...比如,/articles这个 URL 就是正确的,而下面的 URL 不是名词,所以都是错误的。...它与302和307的含义一样,也是"暂时重定向",区别在于302和307用于GET请求,而303用于POST、PUT和DELETE请求。...HTTP/1.1 303 See Other Location: /api/orders/12345复制代码 2.4 4xx 状态码 4xx状态码表示客户端错误,主要有下面几种: 400 Bad

96840

RESTful API 设计规范

# GET:读取(Read) # POST:新建(Create) # PUT:更新(Update) # PATCH:更新(Update),通常是部分更新 # DELETE:删除(Delete) 动词的覆盖...POST /api/Person/4 HTTP/1.1 X-HTTP-Method-Override: PUT 上面代码中,X-HTTP-Method-Override指定本次请求的方法是PUT,而不是...宾语必须是名词 宾语就是 APIURL,是 HTTP 动词作用的对象。它应该是名词,不能是动词。比如,/articles这个 URL 就是正确的,而下面的 URL 不是名词,所以都是错误的。...它与302和307的含义一样,也是"暂时重定向",区别在于302和307用于GET请求,而303用于POST、PUT和DELETE请求。...400 Bad Request:服务器不理解客户端的请求,未做任何处理。 401 Unauthorized:用户未提供身份验证凭据,或者没有通过身份验证。

88030

RESTful 最佳实践

1.3 宾语必须是名词 就是 APIurl ,是 HTTP 动词作用的对象,所以应该是名词。例如 /books 这个 URL 就是正确的,而下面的 URL 不是名词,都是错误的写法。...推荐后者,避免出现多级URL。 2.1 状态码必须精确 客户端的请求,服务请求都必须响应,包含 HTTP 状态码和数据。 HTTP 状态码就是一个三位数,分成五个类别。...GET: 200 OK POST: 201 Created PUT: 200 OK PATCH: 200 OK DELETE: 204 No Content 2.3 4xx 状态码 4xx状态码表示客户端错误...400 Bad Request:服务器不理解客户端的请求,未做任何处理。 401 Unauthorized:用户未提供身份验证凭据,或者没有通过身份验证。...正确方式: HTTP/1.1 400 Bad Request ConteNTP-Type: application/json { "status": "fail", "msg": "错误" }

99910

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

文章目录 一、请求和响应 1.请求对象 2.响应对象 3.状态码 4.视图中的使用 5.URL的可选格式 ---- 一、请求和响应 1.请求对象 REST框架引入了一个扩展常规的对象,并提供更灵活的请求解析...return Response(data) # 根据客户端的请求呈现为内容类型。 3.状态码 在视图中使用数字 HTTP 状态代码并不总是能带来明显的阅读效果,如果错误代码出错,也很容易不注意到。..._BAD_REQUEST) @api_view(['GET', 'PUT', 'DELETE']) def snippet_detail(request, pk): """ Retrieve...使用格式后缀可以为我们提供显式引用给定格式的URLAPI将能够处理诸如 http://example.com/api/items/4.json 之类的URL。...# Browsable API suffix 同样,我们可以使用标头控制我们发送的请求的格式。

61630

创建 REST API 的最佳入门教程

view,创建create,编辑edit和删除delete)都可以直接映射到HTTP 中已实现的GET,POST,PUT和DELETE方法。...) 以下是一些最重要的状态码: 请求成功的状态码: 200 – OK (默认的) 201 – Created(已创建) 202 – Accepted (已接受:常用语删除请求) 客户端错误状态码: 400...–请求出错(语法格式有误或服务器无法理解此请求) 401 – 未授权(需要登录) 404 – 找不到 (找不到所请求的文件或脚本) 405 – 不允许此方法(错误的 HTTP方法) 409 – 冲突...(IE尝试以PUT请求创建相同的资源时) API响应格式 当你请求HTTP时,你可以请求你想要接收的格式。...你大可以抛出一些错误的类型。但我建议你将JSON格式作为你的标准响应格式,因为这是开发者想要的格式。没理由去支持其他的格式,除非你已经有一个可支持的API

3K20

RESTful API 最佳实践(阮一峰)

GET:读取(Read) POST:新建(CreatePUT:更新(Update) PATCH:更新(Update),通常是部分更新 DELETE:删除(Delete) 根据 HTTP 规范,动词一律大写...上面代码中,X-HTTP-Method-Override指定本次请求的方法是PUT,而不是POST。 1.3 宾语必须是名词 宾语就是 APIURL,是 HTTP 动词作用的对象。...它与302和307的含义一样,也是"暂时重定向",区别在于302和307用于GET请求,而303用于POST、PUT和DELETE请求。...2.4 4xx 状态码 4xx状态码表示客户端错误,主要有下面几种。 400 Bad Request:服务器不理解客户端的请求,未做任何处理。...正确的做法是,状态码反映发生的错误,具体的错误信息放在数据体里面返回。下面是一个例子。 ? 3.3 提供链接 API 的使用者未必知道,URL 是怎么设计的。

1.3K40

如何设计规范的RESTful API

GET :获取(Read) POST:新建 (CreatePUT:更新(Update) PATCH:更新(Update); 部分更新 DELETE:删除(Delete) 有一些客户端只能使用GET和...POST /api/Person/4 HTTP/1.1 X-HTTP-Method-Override: PUT 上面代码中,X-HTTP-Method-Override 指定本次请求的方法是PUT,而不是...宾语就是APIURL,是HTTP动词作用的对象。他应该是名词,不能是动词。比如,/articles这个URL就是正确的,而下面URL不是名词,所以都是错误的。...400 Bad Request:服务器不理解客户端的请求,未做任何处理。 401 Unauthorized:用户未提供身份验证凭据,或者没有通过身份验证。...这种做法实际上取消了状态码,这完全不可取的,正确的做法是,状态码反应发生的错误,具体的错误信息放在数据体里面返回。下面是一个例子。 API的使用未必知道,URL是怎么设计的。

58220

DjangoRestFramework,restful规范、APIview、解析器组件、Postman等

POST(CREATE):在服务器新建一个资源。 PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。...比如,/articles这个 URL 就是正确的,而下面的 URL 不是名词,所以都是错误的。...400 Bad Request:服务器不理解客户端的请求,未做任何处理。 401 Unauthorized:用户未提供身份验证凭据,或者没有通过身份验证。...301 状态码(永久重定向)302 状态码(暂时重定向,307也是这个含义) 400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求错误,服务器没有进行新建或修改数据的操作...410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。 422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误

2.5K20

RESTful API 最佳实践(阮一峰)

GET:读取(Read) POST:新建(CreatePUT:更新(Update) PATCH:更新(Update),通常是部分更新 DELETE:删除(Delete) 根据 HTTP 规范,动词一律大写...上面代码中,X-HTTP-Method-Override指定本次请求的方法是PUT,而不是POST。 1.3 宾语必须是名词 宾语就是 APIURL,是 HTTP 动词作用的对象。...它与302和307的含义一样,也是"暂时重定向",区别在于302和307用于GET请求,而303用于POST、PUT和DELETE请求。...2.4 4xx 状态码 4xx状态码表示客户端错误,主要有下面几种。 400 Bad Request:服务器不理解客户端的请求,未做任何处理。...正确的做法是,状态码反映发生的错误,具体的错误信息放在数据体里面返回。下面是一个例子。 ? 3.3 提供链接 API 的使用者未必知道,URL 是怎么设计的。

2.7K20

通俗讲解 RESTful

GET:对应 Retrieve 操作(查询操作) POST:对应 Create 操作 DELETE:对应 Delete 操作 PUT:对应 Update 操作 PATCH:对应 Update 操作 2.3...但其实,PUT 也可以做 Create 操作。二者的区别在于: URL:POST 不需要指定到个体,例如新增 user 的接口 POST /api/users。...PUTURL 需要指定到具体的个体,例如 PUT /api/users/1,如果 1 这个 user 存在,则 Update,否则 Create。...3.2 版本 一种方法是在 URL 中添加版本号,例如: https://api.example.com/v1/users 另一种方法是将版本号加在 HTTP 请求头信息的 Accept 字段中,例如:...– Bad Request – 调用不合法,确切的错误应该在 error payload 中描述 401 – 未认证,调用需要用户通过认证 403 – 不允许的,服务端正常解析和请求,但是调用被回绝或者不被允许

68540

RESTful API

即获取数据 POST(CREATE):在服务器新建一个资源。 即添加数据 PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。...400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。...410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。 422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。...500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。 状态码的完全列表参见这里。...') def put(self, request, *args, **kwargs): return HttpResponse('put请求的响应内容') 全局使用 #注册认证类

1.6K20

spring security oauth2.x迁移到spring security5.x 令牌失效 资源服务器invalid_token响应状态码为500而非401

环境 资源服务器迁移到spring security5.5.2 授权服务器仍使用spring security oauth2.x搭建 现象 使用无效的令牌访问资源服务器API时,希望返回401 未授权的响应...但实际返回的时500服务器错误 原因 授权服务器校验无效令牌时返回响应状态码为400 spring security5.x资源服务器OpaqueToken认证逻辑中,将状态码非200的令牌自省响应都以服务器异常抛出...return new OAuth2IntrospectionAuthenticatedPrincipal(claims, authorities); } private URL...issuer(String uri) { try { return new URL(uri); } catch (Exception ex) {...200的响应都以内省异常形式抛出,无法将授权错误请求解析为TokenIntrospectionErrorResponse org.springframework.security.oauth2.server.resource.introspection.NimbusOpaqueTokenIntrospector

2K20

axios

2️⃣ 处理错误麻烦,只有网络错误才会reject(promise的api),Http状态码404、500不会被标记为reject 3️⃣ 不支持取消一个请求以及查看请求的进度。...请求url、参数、请求方式(GET PUT POST DELETE),默认的请求是GET请求,method其实可以不写。...下面的另一个方法 遍历了 'post', 'put', 'patch',这几中方式传入了url data 和 config,所以这几种请求是可以传data参数的。...获取错误信息 在使用Promise的then() API的时候,我们是可以再通过catch API 获得错误异常的。那么 async await这种写法怎么获得错误异常呢?...再考虑一个问题,如果,去请求两台服务器 那么baseURL怎么办 可以创建多个实例 通过 axios.create // 创建实例 const instance1 = axios.create({

4K10

【全栈修炼】422- RESTful 架构及实践 修炼宝典

/api/users/100 新建一条 users 记录 POST /api/users 更新一条 users 记录 PUT /api/users/100 删除一条 users 记录 DELETE /...动词通常有以下五种 HTTP 方法: GET:读取(Read) POST:新建(CreatePUT:更新(Update) PATCH:更新(Update),通常是部分更新...比如,/users是正确的,因为 URL 是名词,而下面就都是错误的了: /getUsers /createUsers /deleteUsers 1.3 建议复数 URL 因为 URL 是名词,没有单复数的限制...这边列举几个经常使用的状态码介绍: 303 See Other:表示参考另一个 URL400 Bad Request:服务器不理解客户端的请求,未做任何处理。...正确的做法应该是在错误时,返回对应错误状态码,并将错误信息返回: HTTP/1.1 400 Bad Request Content-Type: application/json { "error"

1.3K30

【Restful】你还不懂Restful API规范吗?

POST(CREATE):在服务器新建一个资源。 PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。 PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。...200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。 201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。...400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。...410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。 422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。...500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。 返回结果 针对不同操作,服务器向用户返回的结果应该符合以下规范。

1.4K40
领券