/bin/kafka-run-class.sh kafka.tools.GetOffsetShell --time ,但是我在测试的时候,发现有的时间戳会获取不到offset,是空...stackoverflow.com/questions/30030393/strange-behavior-of-kafka-tool-kafka-tools-getoffsetshell 其中已经有大佬给出了答案,但是我还是不求甚解...所以这个命令 --time 只能匹配个大概的 offset 而已,无法精确。如果精确,可以调用 java api 来封装成接口或工具使用。...三、调用 kafka java api 获取时间戳对应的 offset,并封装成工具脚本 很纳闷,为什么官方不提供获取时间戳对应的精准的 offset 呢?...既然官网没有,那我就用 java api 封装一个工具脚本吧。 先展示下效果: .
我的公司 http://ipinfo.io 就是从回答 Stack Overflow 上面的问题开始的。它是一个查看 IP 详情的 API,可以告诉你站点访问者的地理定位、组织详情等等。...我用了几个小时内构建了这个 API,发布了答案,就没再管它了。直到几个月之后,后来我收到了一封邮件,说我的服务器负载过高。我竟然每天都在接收着数百万的请求! ? ?...这个副业现在成了我的主业,我开始全职做它。我每天会收到 2 亿 5 千万的请求,但实话实说,我们基本没怎么宣传这个 API。 我们做的仅仅是成为开发者社区的活跃用户,为社区做了点微小的贡献。...最终,我的回答开始变得至关重要,我注意到那些在过去读过我答案的人会在其他的问题中链接到我的网站。因为我的 API 解决了问题,其他开发者开始为我做口碑营销。 参与社区能活动够零成本在市场推广你的产品。...最后,说真的,如果不是这次经历,我永远想不到,为了回答一个问题,用几个小时构建了一个 API,然后每日能获得数亿的请求,因此还成立公司。
最近有同学提出,你的文字还OK,就是排版有问题,嗯,的确。我的排版的确是很烂,我也想改变,可能基于工作中的时间问题,以及学习的速度,让我实在是没有能力在排版上下功夫。...p.time and i.trx_mysql_thread_id not in (connection_id(),p.id); 通过这个方式可以将长时间等待metadata lock 不工作的事务从数据库中找出来...,用户的prepare状态会被保持直到XA_COMMIT 或者 XA_ROLLBACK 除了这个问题以外,就是关于如何发现曾经MYSQL 发生过错误,一般的情况MYSQL 5.X我们都是去找到ERROR...LOG ,里面去找寻可能发生的信息,但是MYSQL 8 我们在performance_schema 中已经有了 events_errors 系列,这些表可以让你从各个层面来了解MYSQL 在最近都发生过什么错误...; 以上的这个表,主要是从访问数据库的用户的角度来出发,查看这个用户曾经发生过什么样的错误,我们可以改写一下这个查询的语句,来更精确的对这个账号发生过什么错误进行判断。
API是定义应用程序接口的通用术语,换句话说,定义了用户(人或机器)如何与程序交互。在Web开发世界中,API通常是响应客户端结构化文本数据请求的网站端点集合。...我喜欢上了后者:即使它是邻居新的酷孩子,它已经成熟足够和能够让人愉快的工作。这里会阐述为什么。...从官方网站上获得定义: API蓝图(支持markdown语法)是简单的,并且可以在API生命周期的访问每个元素。它的语法简洁而富有表现力。...name=apple&rating=4 您也可以使用连接参数&,搜索apple和评级为4的蛋糕。 6.使用4xx返回错误。 每个人都憎恨HTTP响应状态代码是2xx,却返回一个错误的消息!...难以误用:如果发出了错误的请求,返回错误并提供信息。 简单是比复杂更好:简单的事情在每个方面都很容易。 在实现它之前使用你的API:创建一个模拟服务器来获得最终结果并演示。
3 降低有效载荷 在这一段中,作者指出,RESTful API 不允许部分响应。这是错误的。这里有一个例子: GET /users?...当我们讨论 GraphQL 中的类型安全时,其实我们的意思是,我们相信 GraphQL 服务器的行为会与自省查询响应保持一致。为什么我们不能同样信任接口定义规范呢?我想我们可以。...对于 BFF 多么强大,以及与重量级的 GraphQL 客户端相比,我们从“stale while revalidate 模式”中获得了多少好处,我想我已经解释得够多了。...我很抱歉,但是我又一次得出了一个完全不同的结论。如果将规则设置为不允许版本控制,则可以添加新的端点或替换现有端点的实现。在这种情况下,GraphQL 和 REST 之间没有区别。...8 错误处理更好 关于错误处理,作者描述了这样一个场景:与使用部分数据响应的单个 GraphQL 查询相比,客户端将不得不进行 3 次连续的 REST API 调用。
另一方面,还有一些更新的、更现代的参与者,尝试着从基于 REST 的 API 中获得一些关注。当然,我指的是 GraphQL。...从端点名称到输入参数,再到 JSON 键。 所以让我们从 API 端点开始。规则也非常的简单: 不要用动词,而是用名词。 用复数替代单数。...客户端错误响应代码(从 4xx 开始)。 服务器错误响应代码(以 5xx 开头)。 因此,你真的拥有你需要的所有状态。从 OK、未授权、未找到、内部服务器错误到超文本咖啡壶控制协议,所有这些都有。...因此,假定你已经有了一个端点,它接受了 user_id 并获得了用户资料。...它以某种方式被传送到 API,API 自然会出发一次确认和错误,并且响应 400(错误请求)。与此同时,API 应当发出一种通用的错误响应模式,使客户端能够将任意或全部的信息显示给终端用户。
大家好,我是小富~ 在这个微服务的世界里,后端API的一致性设计是必不可少的。 今天,我们将讨论一些可遵循的最佳实践。我们将保持简短和甜蜜——所以系好安全带,出发咯!.../version 用版本号响应对/version的请求。 /metrics 这个端点将提供各种指标,如平均响应时间。 也强烈推荐使用/debug和/status端点。 9....在你的响应体中包括总资源数 如果API返回一个对象列表,则响应中总是包含资源的总数。你可以为此使用total属性。...在嵌套资源的URL中使用关系 以下是一些实际例子: GET /shops/2/products:从shop 2获取所有产品的列表。...例子包括无效的身份验证凭证、不正确的参数、未知的版本id等。 当由于一个或多个服务错误而拒绝客户端请求时,一定要返回4xx HTTP错误代码。 考虑处理所有属性,然后在单个响应中返回多个验证问题。
客户端向 GraphQL 层发起单个请求,并获得一个完全符合客户端需求的响应。 引入 GraphQL 层有诸多好处。例如,一大好处便是能与多个服务进行通信。...所以让我回答一下你最有可能问的问题。 REST API 有什么问题? REST API 最大的问题是其多端点的本质。这要求客户端进行多次往返以获取数据。...它们当然不是 REST API 的所有问题,我也不想讨论 REST API 是什么。我主要讨论的是比较流行的基于资源的 HTTP 端点 API。...这些 API 中的每一个最终都会变成一个具有常规 REST 端点 + 由于性能原因而制定的自定义特殊端点的组合。这就是为什么 GraphQL 提供了更好的选择。 GraphQL如何做到这一点?...最后一个概念解释了为什么我个人认为 GraphQL 是一个规则颠覆者的原因。 这些都是高层次的概念。让我们进一步了解一些细节。 为了解决多次往返的问题,GraphQL 让响应服务器只是作为一个端点。
您需要的另一件事是OpenAI API 密钥。链接的文章向您展示了如何在几分钟内获得一个。 就这样了!我们开始谈正事吧。...OpenAI API — 测试聊天完成端点 我们将在 SQL 中实现的聊天完成示例非常简单。...理论上来说,如果您可以运行上面的curl 命令并获得响应,那么您也可以在 SQL 中执行相同的操作。 演示这一点的最简单方法是通过Postman。...你可以(并且应该)改进什么 您今天实施的解决方案有效,但相当基础,可以从一些调整中受益: 异常处理——目前根本没有实现。确保您发现潜在的dbms_cloud错误以及其他更通用的错误。...硬编码端点- 该函数仅向当前状态下的聊天完成端点发送请求。最好使端点动态化。 响应不会被持久化——最好在将响应返回给用户之前将其保存到数据库表中。
但是,我也曾遇到过一些让 REST 蒙羞的 API 例子,错误使用 HTTP 状态码、纯文本响应、不一致的模式、插入端点中动词......我个人建议使用复数形式。为什么?因为它非常适合所有类型的端点。 我可以看到 GET /book/2/ 是没问题的。但是 GET /book/ 呢?我们是在获取图书馆里唯一的那本书、其中几本还是全部?...在响应体中返回错误详情 当API服务器处理错误时,将错误详细信息包含在JSON主体中可以帮助使用者进行调试,这是是非常方便的,如果您还能说明哪些字段受到了错误的影响,那就更好了!...你的API最糟糕的事情莫过于返回一个带有200 OK状态码的错误响应。 这是最差的语义,相反,应该返回一个能准确描述错误类型的有意义HTTP状态码。...例如,如果你选择某个POST端点返回201 Created,那么对于每个POST端点都应使用相同的HTTP状态码。为什么?因为消费者不应该担心在哪种情况下哪个方法在哪个端点上会返回哪个状态码。
为了帮助我生成这些错误响应,我将在app / api / errors.py中写入error_response()函数:除了错误的有效替代之外,我将使用HTTP协议的状态代码来指示常见错误的类型。...另外,我还需要确保username和email串联尚未被其他用户使用,因此我尝试使用获得的用户名和电子邮件从数据库中加载用户,如果返回了有效的用户,那么我也将返回错误给客户端。...保存在g.current_user中,盔甲我可以从API视图函数中访问它。 错误处理函数只返回由app / api / errors.py模块中的error_response()函数生成的401错误。...如果您直接对上面列出的受令牌保护的端点发起请求,导致得到一个401错误。为了成功访问,您需要添加Authorization标题,其值是请求/ api / tokens获得的令牌的值。...对于JSON响应,我将使用从API blueprint中引入error_response辅助函数,但在这里我要将其重命名为api_error_response(),刹车清楚它的作用和来历
文档包含了这些 API 端点:充电端点、合作伙伴端点、用户端点、车辆端点和车辆命令,提供了 cURL、JavaScript、Python 和 Ruby 请求示例。...' 梅赛德斯奔驰互联汽车战略师 Mark Gerban表示: 我很好奇这是否可以为开发人员带来收入,因为如果他们想要获得关注,吸引更大的参与者,就需要提供相应的回报。...从 Hacker News 的一个讨论帖可以看到许多开发人员为此感到兴奋,但图形和计算机视觉工程师 James Darpinian 警告说: 多年来,通过逆向特斯拉官方应用程序 API 已经可以获得几乎所有这些特性...设备通过建立 WebSocket 连接来推送遥测记录,Fleet Telemetry 则向客户端提供确认、错误或速率限制响应。...要获取 API 密钥并与 API 端点发生交互,开发人员必须创建特斯拉帐户并请求获得批准。
图片来源于网络 大家好,我想分享一下我是如何在某邀请项目中发现一个简单的API授权错误的,该错误影响了数千个子域,并允许我在无需用户干预的情况下使用大量不受保护的功能,从帐户删除到接管甚至于泄漏部分信息...,因为它列出了API文档并指定了请求和响应的结构。...该网站似乎未提供任何API,并且我找不到任何生成APItoken的方法,因此我决定稍后再进行检查。在对该网站进行深入分析后,我仍然不能在请求或响应中找到一个APItoken。...但是,我注意到许多请求都有 authorization 头。 我决定只复制authorization 头并将其包含在对我发现的API端点的调用中。...我创建了另一个帐户,并尝试通过api / user / edit的POST请求更改其密码。 ? ? 可以看到响应成功!
在我的职业生涯中,我使用了数百个 REST API 并制作了数十个。由于我经常在 API 设计中看到相同的错误,因此我认为写下一组最佳实践可能会更好。...规则 #4:不要将数组作为顶级响应返回 来自端点的顶级响应应该始终是一个对象,而不是一个数组。...如果您的端点返回顶级数组,您将需要一个全新的端点。 规则 #5:不要返回映射结构 我经常看到 JSON 响应中用于集合的映射结构。相反,返回一个对象数组。...如果将 404 作为成功处理,而堆栈中的失败返回 404,作业就会从队列中删除,删除也不会传播。我在现实生活中就遇到过这种情况。...糟糕的选项:提供一个端点来列出最近的交易 如果 API 未提供任何有关幂等性的显式帮助,则这是客户端开发人员的解决方法: 每次提交之前,从服务器获取最近事务的列表。
这里我推荐使用后者。为什么呢?因为复数形式可以满足所有类型端点的需求。 单数形式的 GET /article/2/ 看起来还是不错的,但是如果是 GET /article/ 呢?...在响应中返回错误详情 当 API 服务器处理错误时,如果能够在返回的 JSON body 中包含错误信息,对于接口调用者来说,会一定程度上帮助他们完成调试。...当然可以,不过让我讲一个故事: 我曾经使用过一个 API,对于它返回的所有响应的状态码均是 200 OK,同时通过响应数据中的 status 字段来表示当前的请求是否成功,比如: {...某天,我在将某个 API 端点集成到项目中,但是我总是收到 500 Internal Error 的错误,我调用的端点差不多看起来这样: POST: /entities ``` 调试一段时间之后...分清 401 和 403 当我们遇到 API 中关于安全的错误提示时,很容易混淆这两个不同类型的错误,认证和授权(比如权限相关)—— 老实讲,我自己也经常搞混。
你是否曾对处处都像猜谜游戏一样的糟糕API感到生气, 好吧我就曾有过这种体会 。在微服务架构下,我们必须对后端API设计遵循一致性。.../health 使用 200 OK 状态代码响应对 /health 的请求。 /version 用版本号响应/version的请求。 /metrics 此端点将提供各种指标,例如平均响应时间。...好的示例: http://api.domain.com/v1/shops/3/products 始终对API使用版本控制的原因是如果你的API被外部实体使用, 更改端点会破坏其功能。 12....在您的响应中包括资源总数 如果 API 返回一个对象列表,在响应中经常包含资源总数。您可以为此使用 total 属性。 差的示例: {users: [ ...]}...由于一个或多个服务错误而拒绝客户端请求时,请务必返回 4xx HTTP 错误代码。 考虑处理所有属性,然后在单个响应中返回多个验证问题。 22.
作者 | Simon Willison 译者 | 王强 策划 | 万佳 我上周在 Twitter 上发起了一个关于 API 端点的讨论。...VIAL 用来实现流式响应,以提供“从管理员导出功能。它还有一个受 API 密钥保护的搜索 API,可以用 JSON 或 GeoJSON输出 所有匹配行。...挑战:如何返回错误 如果你正在流式传输一个响应,你会从一个 HTTP 200 代码开始……但是如果中途发生错误,可能是在通过数据库分页时发生错误会怎样?...挑战:可恢复的下载 如果用户通过你的 API 进行分页,他们可以免费获得可恢复性:如果出现问题,他们可以从他们获取的最后一页重新开始。 但恢复单个流就要困难得多。...最简单的解决方案:从云存储生成和返回 实现这种 API 的最健壮的方法似乎是技术上最让人觉得无聊的:分离一个后台任务,让它生成大型响应并将其推送到云存储(S3 或 GCS),然后将用户重定向到一个签名
REST 的核心思想是,通过向资源的 URL 发送请求并获得响应(通常是 JSON,但这取决于 API)来检索资源。...灵活性 是使用 REST 的另一个优势,因为可以将其设计成处理不同类型的调用并返回不同的数据格式。 REST 的劣势 抓取过度——这是指 API 端点提供的信息比客户端所需要的要多得多。...抓取不足——这是指 API 端点并没有提供所需的全部信息。因此,客户端必须发出多个请求才能获取应用程序所需的全部内容。 什么是 GraphQL?...这也意味着我们可以定制我们的请求,这样我们就可以从端点发出任何请求,并且能获得我们所请求的任何内容,仅此而已,无需更多操作。我们传递查询并得到响应。...}} 通过使用这样的查询,我们将能获得具有以下属性的 JSON 响应。
/version 用版本号响应对/version的请求。 /metrics 这个端点将提供各种指标,如平均响应时间。 也强烈推荐使用/debug和/status端点。 9....在你的响应体中包括总资源数 如果API返回一个对象列表,则响应中总是包含资源的总数。你可以为此使用total属性。...在嵌套资源的URL中使用关系 以下是一些实际例子: GET /shops/2/products:从shop 2获取所有产品的列表。...例子包括无效的身份验证凭证、不正确的参数、未知的版本id等。 当由于一个或多个服务错误而拒绝客户端请求时,一定要返回4xx HTTP错误代码。 考虑处理所有属性,然后在单个响应中返回多个验证问题。...---- ---- 欢迎加入我的知识星球,一起探讨架构,交流源码。
如果您希望在编写更少代码的同时获得更灵活、性能更高的 API,那么 GraphQL 应该是您 API 策略的关键部分。...为什么某些后端系统仍然无法访问?为什么我们饱受 API 蔓延和维护噩梦的困扰?为什么开发人员需要为每个前端项目乞求自定义 API,却只能进行多次调用才能获取所需数据?...使用 GraphQL 摆脱复杂性陷阱 我要告诉你,你并没有充分利用现代 API 的所有功能。GraphQL 是答案,它将帮助你完成更多工作,同时编写更少的代码。...此外,GraphQL 的敏捷迭代功能使 API 团队能够快速响应不断变化的业务需求和客户需求,提供了一个灵活且适应性强的底层数据,可以进行自信、快速的迭代,而不会破坏现有的 API 或中断系统。...如果您希望在编写更少代码的同时获得更灵活、性能更高的 API,那么 GraphQL 应该是您的 API 策略中的一个关键部分
领取专属 10元无门槛券
手把手带您无忧上云