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

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

简单一下代码重用 记得在Ken RogersMedium博客里曾经见过这么一句话(原文出自海明威): 我们都是手艺学徒,没有人会成为大师。...有关响应其他内容,请阅读下文:“JSON格式响应和请求”。 使用封包 “不喜欢数据封包。它只是引入了另一个浏览数据树。元信息应该包含在包头中。”...登录 在程序实现中,正常登录过程如下所示: 1. 通过/login接收邮件和密码。 2. 检查数据电子邮件和密码哈希。 3. 创建一个刷新令牌和JWT访问令牌。 4....返回以上两个数据。 续订令牌 正常续订验证流程如下所示: 1. 尝试从客户端创建请求时,JWT已经过期。 2. 将刷新令牌提交到/renew。 3....如果验证通过,则JWT有效载荷中包含了一个uid,它用于在API响应上下文中传递一个对应user对象检查权限/角色,相应地创建/读取/更新/删除数据

2K30

单个资源

为了让ASP.NET Core Web API 支持HATEOAS, 需要自己手动编写代码实现....看之前例子里面的Links链接,这些链接格式并不是某个标准格式,而是自己创建格式,消费者API并不知道如何处理这些Link,消费者API需要从API文档中了解如何解析Link,需要在API文档里描述...因为,就看上一个截图,这个方法接收格式json但是如果想要也支持接收xml,就直接在数组里添加另一个xml媒体类型就可以了。...这个约束标签不仅仅可以过滤一个Header类型,也可以多个,比如说同时还要根据Accept Header指定不同方法,那么: 这里提示重复,但是可以通过修改这个约束标签类解决: 这时,错误提示就没有了...但是OData就不仅仅是HATEOAS了,它正在尝试对RESTful API进行标准化,例如它还对创建Uri、翻页以及调用方法等等都制定了很多规则,还有很多东西,但是还是不怎么使用OData。

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

用ASP.NET Core 2.1 建立规范 REST API -- HATEOAS

为了让ASP.NET Core Web API 支持HATEOAS, 需要自己手动编写代码实现....然后让CityResource继承于LinkResourceBase: ? 最后在Controller里面,我们需要写代码为资源创建上面概念提到Links。...看之前例子里面的Links链接,这些链接格式并不是某个标准格式,而是自己创建格式,消费者API并不知道如何处理这些Link,消费者API需要从API文档中了解如何解析Link,需要在API文档里描述...因为,就看上一个截图,这个方法接收格式json但是如果想要也支持接收xml,就直接在数组里添加另一个xml媒体类型就可以了。...但是OData就不仅仅是HATEOAS了,它正在尝试对RESTful API进行标准化,例如它还对创建Uri、翻页以及调用方法等等都制定了很多规则,还有很多东西,但是还是不怎么使用OData。

84440

《秋风日常第三期》11个前端开发者必备网站

当你想从浏览器中尝试一段代码任何当前JS框架中功能时,Stackblitz非常有用。假设你正在阅读Angular文章,并且遇到了想要尝试代码。...您可以最小化您浏览器快速搭建一个Angular项目。 还有其他很棒在线IDE,但是相信Stackblitz转折点是使用每个人都喜欢 Visual Studio Code感觉和工具。...它通过解析代码使用JS最佳编码实践将其重新打印实施一致样式。 该工具已在我们开发环境中广泛使用,但它也具有一个在线地址,你可以在其中美化您代码。 ?...请求,操作简单且方便。...如果您对此有任何疑问或应添加,更正或删除任何内容,请随时发表评论。 谢谢 !!! 关注

89020

【Http】一文备忘Http状态码(406,415,422)

最近在调试接口时,web api 报了一个415状态码。好久没见到这个状态码,一时还真不知道啥情况。所以,人大脑是有遗忘规律,为了加深印象,所以我觉得有必要再复习一下。...例如请求媒体类型是application/xml,但是Web API仅支持application/json类型,并且API不会将application/json作为默认格式提供; 409:Conflict...当请求包含*accept头,在ASP.NET Core*框架中,将会: 按*accept*头中顺序枚举媒体类型 尝试找到一个能生成*accept*中指定格式之一格式化器 找到了,就还罢了,一旦找不到格式化器...如果请求没有Accept头: 使用第一个可以处理对象格式化器响应序列化 不执行任何协商,由ASP.NET Core决定返回格式 Accept: */*,..,.....:“你给,不是想要”——422 顺带提一下并不常用,但是却非常有用状态码——422。

1.1K10

从壹开始前后端分离【 .NET Core2.2 +Vue2 】框架之十二 || 三种跨域方式比较

,同步+Redis缓存还是比较简单,如何使用异步泛型存取Redis,还是一直心结,希望大家有会,可以不吝赐教,本系列教程已经基本到了尾声,今天就说两个小知识点,既然本系列是讲解前后端分离,那一定会遇到跨域问题...然后顺便说一下DTOs(数据传输对象),这些东西大家都用过,比如,在MVC中定义一个ViewModel,是基于Model实体类,然后做了相应变化,以适应前端需求,没错,就是这个,如果大型实体类,一个个复杂的话会稍显费力...二、三种跨域方式 之JsonP 自己建立了一个静态页面,用来模拟前端访问,具体如下步骤: 1、模拟前端访问页面 新建一个Html页面,使用Jquery发送请求(文件在项目的WWW文件夹下,大家可以自己下载...,要求很严谨 4、点击”通过JsonP实现跨域请求“按钮,发现已经有数据了,证明Jsonp跨域已经成功,你可以换成自己域名试一试,但是Cors还不行 三、三种跨域方式 之添加请求头实现跨域 这里没有写到代码里...六、结语 三种办法其实都能达到目的,但是优缺点也很明显 1、手动创建JSONP跨域 优点:无浏览器要求,可以在任何浏览器中使用此方式 缺点:格式要求很严格,只支持get请求方式,请求后端出错不会有提示

71610

从 Python 切换到 Go 9 个理由

它演示了赋值、数据结构、指针、格式化和内置 HTTP 库。 从首次接触编程开始,总是喜欢使用 Python 高级特性。Python 使我们能从正在编写代码中获得很好想法。...如果只是创建一个基本 CRUD API仍然建议使用 Django& DRF 或 Rails。 理由 4 :并发和通道 作为一门编程语言,Go 总是尽可能地保持简单。...但是,如果我们想要构建一个简单 CRUD API,那么使用 Django/DJRF、Rails Laravel 或 Phoenix 则会更简单。...请看一下该排序方法示例: Python 和 Go 代码都需要执行如下操作支持此排序方法: 解析分数表达式,将“simple_gauss”转换为函数,输入活动输出分数 通过 JSON 配置创建函数...当然,这只是说明我们切换到 Go 后性能提升一个简单示例: 排序代码用 Go 编写一个项目。 Go 代码是在 Python 代码之后编写,因此对项目的理解更加深入。

1.1K20

挖洞从思路出发:登录框实战

(以上得出页面信息传输应该采用json格式) 如果遇到缺少参数而无类似上述提示,可以尝试传入垃圾参数,根据回包FUZZ参数。...(“某某管理系统”这个关键字在小程序转web那个登录框是没有的) 但是通过google语法搜索关键字“某某管理系统”找到了一个api文档。...但是......加密了: 简单弱口令尝试无果...... 怎么办?要不要深入分析js文件,或者做特定字典尝试爆破?或者又再次将目标转移到这个页面测试,先把api文档搞出来看看???...这里经过多次尝试,找到了一个未授权接口,结合先前接口特征进行拼接访问,得到敏感信息:(其实好多时候拿到api文档一般都不能直接用,需要通过观察api文档路径规则后再自己FUZZ接口,FUZZ参数...(这种设计挺安全,还好没直接把用户信息一下全部调出来,不然可能就要跟它数据库一起寄了) 后来将GET请求改POST请求,在body处构造json数据格式,开始FUZZ。

10320

错误代码

解决方案: 错误消息应该会指导您找出具体错误。查看您正在调用具体API方法文档,确保您发送了有效和完整参数。您可能还需要检查请求数据编码、格式或大小。...这可能是由于拼写错误格式错误代码逻辑错误导致。如果遇到 BadRequestError 错误,请尝试以下步骤:仔细阅读错误消息,识别具体错误。...您可能需要将数据编码为UTF-8,将数据格式化为JSON,或者如果数据过大,则需要压缩数据。使用Postman或curl等工具测试您请求确保其按预期工作。...您可能需要调试您代码修复请求逻辑中任何错误或不一致之处。如果问题仍然存在,请查看我们持久性错误下一步操作部分。...持续性错误如果问题仍然存在,请通过聊天联系我们支持团队,并向他们提供以下信息:您正在使用模型您收到错误消息和代码您发送请求数据和标头您请求时间戳和时区可能有助于我们诊断问题任何其他相关细节我们支持团队将调查此问题

11310

阻止 API 被他人采用4个技巧

这样循环已经持续几个月,这就像一场梦,日复一日,迟迟没有苏醒一刻。要处理任务很简单:获取数据,保存数据,完事。但面对这个 API被一堆脆弱代码团团围住,追逐着那些永远都抓不到错误。...但是,也许在你查看请求通过那些日志时,它终于有反应了,只不过响应来得慢一些。不过当然 JSON 没有按照你预期方式格式化,所以请重来一遍吧。 2禁止重复数据 这招可是很不错。...不过你只要简单地想象一下,比如你编写了自己第一行代码,然后又成功地执行了它,然后当你再次运行它时,它就没有任何反应了。想象一下项目的其他部分全变成了这个样子,那会是多么壮观场面。...最厉害是当你正在尝试开发一个高度可扩展应用程序时候,你到底该怎么开始测试随便什么类型负载呢?简单答案是你可以在生产环境中进行测试,也可以根本不做任何测试。...在过去几个月里,花了很多时间试图想象这个 API 背后团队究竟是什么样子,以及他们到底有什么样动机开发这样一个 API。无论你是如何看待它,他们初衷肯定是防止别人使用这个 API

32530

springboot第30集:springboot集合问题

主要用来接收前端传递给后端json字符串中数据,所以只能发送POST请求。...根据提供错误信息,看起来存在JSON解析错误错误提示显示在解析过程中遇到了意外字符'}',期望是双引号以开始字段名。...这种情况通常发生在接收JSON数据格式不正确时,可能是由于发送数据格式错误或存在其他格式问题。请确保传递给JSON.parse()数据是有效JSON字符串,符合JSON语法要求。...您可以尝试检查传递给JSON.parse()event.data数据确保它是有效JSON字符串。检查JSON字符串中是否存在不正确字符、缺少引号或其他语法错误。...如果您需要更详细帮助,请提供实际接收event.data数据,以便能够更准确地帮助您解决问题。

30820

解决:node后端接收到axiospost请求体竟为空?

前言: 在做项目时,你们是否会遇到这样一个问题: 使用axios发送post请求,传入了Object格式参数,在node后端req.body接收参数为空,但是网页上抓包检查时,发现请求body...显而易见,服务器中req.body请求体中没有任何参数。但是页面确实是提交了数据呀? 于是在页面F12进行网络抓包查看发出去request请求 ? ​...后来,把问题锁定到了axios请求机制和服务器对请求数据解析上 之后尝试过在axios请求函数中,在header中配置内容数据格式为'Content-Type': 'application/x-www-form-urlencoded...这就能解释为什么第一次发送是obj对象数据请求体携带的确是json格式数据,说明axios会自动转换数据json格式 后来又在源码上看到了转换请求体参数格式相关代码 if(utils.isURLSearchParams...这让到了最开始配置这行代码 // 配置解析 数据格式为表单数据请求中间件 app.use(express.urlencoded({ extended: false })) expres

7.7K62

在 React 应用中获取数据

创建简单服务 创建一个简单 quotes 服务。这篇教程重点不是它,它可以提供远程 API 用来演示如何在 React 中获取数据。...因为希望数据一直是最新,所以,会以轮询方式通过 REST API 获取远程数据但是,初始化数据也非常重要。React 组件生命周期方法允许你在特定时间执行你需要业务逻辑。...不推荐这么操作。 数据更新频率 在 componentDidMount() 方法中初始化数据是很合理但是需要经常更新数据。基于 REST API,只有通过轮询方式解决。...在演示 app 中,当请求数据简单显示一条提示信息:“请求数据中...”。在 App 组件 render() 方法中,通过检查state.isFetching 决定是否显示提示信息。...在这里错误处理非常有限只是捕获错误输出到控制台。

8.4K20

Fetch还是Axios——哪个更适合HTTP请求

但是现在,开发人员通常会决定在 fetch() API 和 Axios 之间进行选择。 在本文中,想比较这两种方法,简要介绍一下基本知识和语法。...除此之外,还将比较在两种情况下以及在错误处理中将数据转换为 JSON 格式过程。还将讨论 HTTP 拦截和下载进度。 开始吧!...,当响应良好时,返回了数据但是如果请求任何方式失败,就能够检查 .catch() 部分中错误类型返回正确消息。...在第一种情况下,创建一个 console.log,告知发送请求情况,在响应拦截中,我们可以对响应做任何操作,然后返回。...总结 在这篇文章中,比较了用于创建 HTTP 请求两种方法,从简单概述开始,通过语法和一些重要功能,如下载进度或错误处理。

4.6K20

带你认识 flask ajax 异步请求

将采用约定,将任何将把语言设置为空字符串帖子假定为未知语言 04 展示一个 ‘翻译’链接 第二步很简单。...首先需要检查和确认状态码是200,这是成功请求代码。如果得到任何其他代码就知道发生了错误,所以在这种情况下,返回一个错误字符串。...异步(Ajax)请求类似于我在应用中创建路由和视图函数,唯一区别是它不返回HTML或重定向,而是返回数据格式为XML或更常见JSON。...现在要做就是说明一旦这个请求完成并且浏览器接收到响应,想完成事情。在JavaScript中没有需要等待事情,一切都是异步。需要做是提供一个回调函数,浏览器在接收到响应时调用它。...元素可以接受任何JavaScript代码,如果它带有javascript:前缀的话,那么这是一种方便方式调用翻译函数。

3.7K20

一个“爆款”成功API,都离不开这8条设计准则

因为作为一个API使用者不想去猜每个接口每个参数值类型。 除了需要考虑你接口如何访问数据以外,你也应该好好想一下API如何返回数据以及返回数据格式统一性。...然而现在就像是从数据库查出几条记录然后发现有几条数据里面没有某个字段而其他几条却有。然后这就开始让你怀疑查询出来结果产生了一个疑问“那些消失属性是被我弄丢吗?” 2.简单明了 ?...如果你某个API是负责创建一个product,那么就让它执行完创建操作后返回一些有关刚刚创建product相关信息,而不是去要求客户端再去发送一个请求获取你刚刚创建product相关信息。...工作到现在用过很多APIJSON格式和XML格式都有。我会告诉你我觉得JSON格式更好用。...所以不要犯这些严重错误:传参格式不一致,只做简单响应,对刚刚处理结果只字不提(不健谈)而且响应得很慢。那将毁了你整个API

88670

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

200 - OK 201 - Created,表示资源创建成功了 204 - No content,成功执行,但是不应该返回任何东西 400级别,表示客户端引起错误: 400 - Bad request...错误;有时也用在尝试创建资源时该资源已存在情况。...entity,表示请求格式没问题,但是语义有错误,例如实体验证错误。...看一下当前情况,请求Accept Header为application/json时: ? 请求Accept Header为application/xml时: ? 它们返回都是json格式。...下面看看创建Country代码: ? 这个代码简单数据是从请求body带进来。 需要注意是返回什么,如果POST操作执行成功的话,标准做法是返回201 Created 状态码。

1.5K10

使用 System.Net.Http.Json 高效处理Json数据

在这篇文章,将介绍一个名为 System.Net.Http.Json 扩展库,它最近添加到了 .NET 中,我们看一下这个库能够给我们解决什么问题,今天会介绍下如何在代码中使用。...在此之前我们是如何处理 JSON是一种普遍和流行串行化格式数据发送现代web api,经常在项目中使用HttpClient 调用外部资源, 当 content type 是 “application..., 但是我们从外部服务接收JSON数据需要都编写这些,在微服务环境中,这可能是在很多地方,不同服务。...在过去使用过它,因为它提供了有用扩展方法支持从HttpResponseMessage上内容流进行高效JSON反序列化,这个库依赖于Newtonsoft.Json文件使用其基于流API支持数据高效反序列化...使用 HttpClient 发送和接收Json数据 下边一些代码和示例已经上传到了这里 https://github.com/stevejgordon/SystemNetHttpJsonSamples

2.1K00

「译」使用 System.Net.Http.Json 高效处理Json

在这篇文章,将介绍一个名为 System.Net.Http.Json 扩展库,它最近添加到了 .NET 中,我们看一下这个库能够给我们解决什么问题,今天会介绍下如何在代码中使用。 ?...在此之前我们是如何处理 JSON是一种普遍和流行串行化格式数据发送现代web api,经常在项目中使用HttpClient 调用外部资源, 当 content type 是 “application..., 但是我们从外部服务接收JSON数据需要都编写这些,在微服务环境中,这可能是在很多地方,不同服务。...在过去使用过它,因为它提供了有用扩展方法支持从HttpResponseMessage上内容流进行高效JSON反序列化,这个库依赖于Newtonsoft.Json文件使用其基于流API支持数据高效反序列化...使用 HttpClient 发送和接收Json数据 下边一些代码和示例已经上传到了这里 https://github.com/stevejgordon/SystemNetHttpJsonSamples

1.2K20

Go Testing By Example--Russ Cox在GopherCon Australia 2023演讲

让我们测试一下. 这是一个很好二分查找功能交互式测试器。你输入两个数字n和t,它会创建一个由于n个元素组成切片,其中包含10递增倍数. 然后在切片中搜索 T 打印结果,并重复这个过程。...假设我们只有一个测试用例,并且想测试一个情况,我们根本不需要编写任何代码,只需添加一行新数据。如果目标是让添加新测试变得容易,那么对于像这样简单函数来说,向表中添加一行就足够了。...为了进行检查,一开始使用bytes.Equal,但随着时间推移,编写一个自定义diffJSON解析两个JSON结果打印实际不同之处, 变得很值得。...Tips11.使测试失败可读 回顾一下,我们已经通过二分搜索看到了这一点。 想我们都同意粉色部分并不是一个失败(提示信息)。但是,在黄色框中有两个细节使这些失败变得特别好。...以下是运行deps.dev代码测试片段。此测试设置一些数据库表行。它调用一个使用数据函数正在进行测试。然后它检查数据库是否包含预期结果。

28010
领券