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

用ASP.NET Core 2.0 建立规范的 REST API -- GET 和 POST

状态码 状态码是非常重要的,因为只有状态码会告诉API的消费者: 请求是否如预期的成功,或者失败 如果出现错误,谁该为这个错误负责 下面再列举一下web API会用到的状态码: 200级别,表示成功:...,表示请求的资源不存在 405 - Method not allowed,这就是当我们尝试发送请求给某个资源时,使用的HTTP方法却是不允许的,例如使用POST api/countries, 而该资源只实现了...GET,所以POST不被允许 406 - Not acceptable,这里涉及到了media type,例如API消费者请求的是application/xml格式的media type,而API只支持...application/json 409 - Conflict,表示该请求无法完成,因为请求与当前资源的状态有冲突,例如你编辑某个资源数据以后,该资源又被其它人更新了,这时你再PUT你的数据就会出现409...但是由于路由参数不支持集合形式, 只能以字符串形式传递, 所以可以做成这样的路由参数: api/xx/(1,2,3,4,5).

1.5K10

5个REST API安全准则

(1)网址验证 攻击者可以篡改HTTP请求的任何部分,包括url,查询字符串,标题,Cookie,表单字段和隐藏字段,以尝试绕过网站的安全机制。...当设计REST API时,不要只使用200成功或404错误。 以下是每个REST API状态返回代码要考虑的一些指南。 正确的错误处理可以帮助验证传入的请求,并更好地识别潜在的安全风险。...200 OK -回应一个成功的REST API的行动。HTTP方法可以是GET,POST,PUT,PATCH或DELETE。 400错误请求 -请求格式错误,如消息正文格式错误。...405不允许的方法 -意外的HTTP方法的错误检查。 例如,RestAPI期待HTTP GET,但使用HTTP PUT。...429太多的请求 -可能存在的DOS攻击检测或由于速率限制的请求被拒绝 (1)401和403 401“未授权”的真正含义未经身份验证的,“需要有效凭据才能作出回应。”

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

尝试使用官方教程学习 GraphQL

利用自有的查询语言,在一次请求中精确获取所需的数据。GraphQL 的使用概念大致如下:在服务器端定义 API 和数据的模式,并进行实现。...客户端使用 GraphQL 独有的查询语言发送请求,以获取、更新等操作数据。也可以使用 HTTP 的 POST 方法发送请求。使用 GraphQL 客户端库等工具可以很好地处理缓存等问题。...,容易出现 N+1 问题使用 dataloader 库的延迟加载进行处理由于向单一终端发送请求,无法进行基于 URL 的缓存使用专用的客户端库进行处理Apollo ClientRelay官方教程(JavaScript...在 REST API 中,根据用途使用 GET/DELETE/POST/PUT 等不同的请求方法,但在 GraphQL 中,所有查询都使用 POST。...不允许具有对象类型。

15810

7.Elasticsearch请求查询

本文目录: - 请求查询 - 空查询 - from 和size - 注意get请求 请求查询 轻量搜索 —query-string search— 对于用命令行进行即席查询(ad-hoc...然而,为了充分利用查询的强大功能,你应该使用 请求体 search API, 之所以称之为请求查询(Full-Body Search),因为大部分参数是通过 Http 请求体而非查询字符串来传递的。...people/user/_search { "from": 0, "size": 2 } 注意get请求: 某些特定语言(特别是 JavaScript)的 HTTP 库是不允许 GET 请求带有请求体的...然而,因为带请求体的 GET 请求并不被广泛支持,所以 search API 同时支持 POST 请求: POST people/user/_search { "from": 0 , "size...": 2 } 类似的规则可以应用于任何需要带请求体的 GET API

69370

前端面试2021-011

2、简述GET请求和POST请求的异同 GET请求和POST请求都属于HTTP1.1规范中的请求方式,用于客户端向服务器发起请求完成数据处理 GET请求主要通过浏览器URL地址、超链接、link标签href...渲染展示给用户 4、阐述一下你都用过哪些NodeJS模块 NodeJS是一个JavaScript运行时环境,包含了大量的具有独立功能的模块 path用于文件路径处理 fs用于文件系统内容读写 qs用于查询字符串解析...querystring用于查询字符串解析 trim用于字符串空格剔除 http用于web服务支持 express用于web应用开发 svg-captcha用于验证码操作 serve-favicon...,主要用于在所有路由函数之前进行请求/响应的处理 错误中间件:自定义中间件,主要用于所有路由函数之后进行错误消息处理 6、普通请求和Ajax请求的区别 普通请求,客户端向服务器发送请求,如果服务器返回需要渲染的数据会出现页面整体刷新...跨域是客户端和服务器不在同一个协议/域名/端口的情况下,进行数据请求的操作过程 一般情况下由于同源策略的存在,服务器数据不允许跨域访问的!

69620

面试必备:接口自动化测试精选面试干货

数据长度不一致,例如设计很长的字符串是否支持,因为数据库创建表过程都设置好了每个字段的长度。输入错误的参数和数据,如故意输错单词等等。...排查思路: 400:客户端请求错误,比如请求参数格式错误(如json字符串不合法); 401:未授权,比如在请求header里,缺乏必要的信息头(如token、auth等字段); 403:禁止,常见的原因是用户的账号没有对应的...url权限,还有就是项目所用的中间件,不允许远程访问(比如Apache); 404:资源未找到,导致这种情况的原因很多,比如: url拼写错误; url后有空格; 项目没有启动成功; 请求协议不对,如http.../https; 405:方法不允许,常见的原因是请求方式不正确,比如GET类型接口,使用POST方式去请求; 415:不支持的媒体类型,常见原因是请求数据的类型和服务端支持的类型不匹配,比如json接口...从以下两种情况分析: 如果单次调用接口就报该错误,说明是后端服务器配置有问题,或者服务不可用,挂掉了; 如果并发压测时出现错误,说明是后端压力太大,出现异常,此问题一般是后端出现响应时间过长或者无响应造成

81440

接口自动化面试题放送,助你离Offer又近一步!

数据长度不一致,例如设计很长的字符串是否支持,因为数据库创建表过程都设置好了每个字段的长度。输入错误的参数和数据,如故意输错单词等等。...排查思路: 400:客户端请求错误,比如请求参数格式错误(如json字符串不合法); 401:未授权,比如在请求header里,缺乏必要的信息头(如token、auth等字段); 403:禁止,常见的原因是用户的账号没有对应的...url权限,还有就是项目所用的中间件,不允许远程访问(比如Apache); 404:资源未找到,导致这种情况的原因很多,比如: url拼写错误; url后有空格; 项目没有启动成功; 请求协议不对,如http.../https; 405:方法不允许,常见的原因是请求方式不正确,比如GET类型接口,使用POST方式去请求; 415:不支持的媒体类型,常见原因是请求数据的类型和服务端支持的类型不匹配,比如json接口...从以下两种情况分析: 如果单次调用接口就报该错误,说明是后端服务器配置有问题,或者服务不可用,挂掉了; 如果并发压测时出现错误,说明是后端压力太大,出现异常,此问题一般是后端出现响应时间过长或者无响应造成

56530

雷电网络RESTful API手册中文版

1、API请求/响应数据的JSON编码 API的访问请求与响应都采用JSON编码。下面是API中的常用对象。...2、API错误信息 对于不成功的API请求,会返回对应的http状态码,例如409冲突或400错误请求等,同时也会在返回的json对象中附带errors字段,你可以用来获取关于错误的详细信息。...这是由于我们依赖于其他开发库来实现API,发生异常时我们无法正常处理响应消息。 无论如何,我们认为500错误是Raiden的bug,如果你碰到这种现象,请反馈给我们。...)/tokens/(token_address) 通道及代币信息查询API 获取未结算通道列表:GET /api/(version)/channels 获取指定代币的未结算通道列表:GET /api/...) 支付相关API 发起支付 : POST /api/(version)/payments/(token_address)/(target_address) 查询支付历史 : GET /api/v1/

1.2K20

Restful 架构 API 接口经典设计误区

Restful 架构风格下,API 接口设计经典误区写法 1、查询某个对象接口:GET /app/getImportantApp @GetMapping(path = "/getImportantApp...比方说,设计产品列表接口时: 错误写法 /getProductList 请求路径 /getProductList 路径出现动词 get,这种写法是不对的。...当然有人赞成在请求路径中加入版本号,也有人反对这种加版本号的做法,他们认为: 加入版本号会让服务接口变得混乱,经常碰到的情况是,一些低版本的API接口调用一些高版本的API接口,导致数据解析错误,这无疑加大了用户迁移的成本...过滤: 使用唯一的查询参数进行过滤: GET /cars?...,需要附加细节解释如 "JSON无效" 401 – Unauthorized – 请求需要用户验证 403 – Forbidden – 服务器已经理解了请求,但是拒绝服务或这种请求的访问是不允许的。

78220

架构必备「RESTful API」设计技巧经验总结

避免查询字符串 查询字符串的作用是对关系数据库返回的记录集做进一步地过滤。 ? 更多信息请看下文:“避免对嵌套路由的操作”。...然而,根据Reddit上的回复所述,如果不封包为JSON数组,则可能会出现各种漏洞和潜在的黑客攻击。 现在建议使用封包,你应该把数据封包后再应答! ?...这消除了在无状态服务器上处理会话和Cookie的需要,并且可以很容易地使用Authorization头(或access_token查询参数)来调试网络请求。点击这里有一篇JWT生成token实战。...终止会话 由于刷新令牌存储在数据库中,因此可以将其删除来“终止会话”。...有多种方法来实现分页: “From”参数 可以说这是最容易实现的,API接受一个from查询字符串参数,然后从这个偏移量开始返回有限数量的结果(通常返回20个结果)。

2K30

elasticsearch API约定(二)

Number Values 所有的REST API都支持在原生的JSON number基础之上,将numbered parameters作为字符串来提供。...,这里的模糊查询被定义为Levenshtein Edit Distance,指将一个字符串变为另外一个字符串所需要操作的步数,默认值为AUTO,AUTO策略如下: 字符长度在0~2之间,必须全部匹配 字符长度在...Request body in query string 对于不接受非POST请求请求体的库,可以将请求主体作为查询字符串参数传递,此时,还应使用指示源格式的媒体类型值传递sourcecontenttype...Content-Type Requirements 必须使用Content-Type头信息指定请求正文中发送的内容类型,Content-Type的值必须映射到API支持的一种格式,大多数API支持JSON...批量和多搜索API支持NDJSON,JSON和SMILE,其他类型将导致错误响应。 此外,在使用source查询字符串参数时,必须使用sourcecontenttype查询字符串参数指定内容类型。

79620

ElasticSearch权威指南:基础入门(中)

轻量搜索 有两种形式的 搜索 API:一种是 “轻量的” 查询字符串 版本,要求在查询字符串中传递所有的 参数,另一种是更完整的 请求体 版本,要求使用 JSON 格式和更丰富的查询表达式作为搜索语言。...而且很脆弱,一些查询字符串中很小的语法错误,像 - , : , / 或者 " 不匹配等,将会返回错误而不是搜索结果。...然而,为了充分利用查询的强大功能,你应该使用 请求体 search API, 之所以称之为请求查询(Full-Body Search),因为大部分参数是通过 Http 请求体而非查询字符串来传递的。...某些特定语言(特别是 JavaScript)的 HTTP 库是不允许 GET 请求带有请求体的。 事实上,一些使用者对于 GET 请求可以带请求体感到非常的吃惊。...类似的规则可以应用于任何需要带请求体的 GET API。 我们将在聚合 聚合 章节深入介绍聚合(aggregations),而现在,我们将聚焦在查询

5.7K41

RESTful API 最佳实践

例子:在HTTP中使用GET方法通常用于从服务器获取资源,无论调用多少次产生的额外效果都是从服务器获取资源,所以GET具有幂等性;而POST方法通常用于提交数据在服务器上创建一个资源,由于最终创建的结果每次都是不同的...URI 应该将API部署在专用域名之下:https://api.example.com 不用大写 用中杠-不用下杠_; 参数列表要encode; URI中不应该出现动词,动词应该使用HTTP方法表示,但是如果无法表示...Request:通过标准HTTP方法对资源CRUD GET查询资源 GET /comments //获取所有评论 GET /comments/tid/1 //获取文章tid为1的所有评论 POST:创建资源...Method Not Allowed – 所请求的HTTP方法不允许当前认证用户访问 410 Gone – 表示当前请求的资源不再可用。...Many Requests – 由于请求频次达到上限而被拒绝访问 11.认证 RESTful API应该是无状态。

1.9K31

浅析 Open API 设计规范

背景 最近由于业务需求,我参与研发的云产品 CSB 需要对外开放 Open API,原本不是什么难事,因为阿里云内部的 Open API 开放机制已经非常成熟了,根本不需要我去设计,但这次的需求主要是针对一些独立部署的场景...7 个小时内的接口请求错误率为例,衍生到诸如 graphQL 这类复杂的查询场景,往往需要 json 结构,GET 是无法实现这一点的,只有 POST 才可以传递 基于此,restful 规范逐渐有了反对的声音...(GET) Request: GET /users/1 Response: HTTP 200 OK {"id": 1, "name": "kirito", "age": 18} 查询用户列表(GET...DELETE 方法的 HTTP 请求时,默认不允许携带 request body,需要显式开启,导致删除失败。...,可能会引发正则匹配的问题,例如误将邮箱作为路径参数,或者多级路径匹配的冲突问题(此案例为设计者的问题,复杂的查询场景,不应当映射成 GET,而应改成 POST,path 中只应该出现资源定位符,而不应当携带属性

2.6K10
领券