首页
学习
活动
专区
圈层
工具
发布

从涂鸦到发布——理解API的设计过程

英文原文:From Doodles to Delivery: An API Design Process   要想设计出可以正常运行的Web API,对基于web的应用的基本理解是一个良好的基础。...成功的API设计意味着要设计出一种接口,让它的使用方式符合它的目的。作为API设计者来说,我们所做的每个决策都会影响到产品的成败。...如果我们要求他人使用这个API,他们又会有什么样的感受?   通过设计与实现多个接口而不发布它们,应该能够实现最佳的API设计。...在API设计的世界中,这种基于工具的优化有很好的表现机会。实际上,在服务描述领域中,已经出现了一些卓越的Web API设计工具。   ...Swagger、RAML与Blueprint都提供了优秀的编辑工具以支持各自的语言。即使像WADL这样仅作为规范发布的IDL,也能够从SoapUI这样的工具中受益。

1.7K40

JSON to Excel 3.0.0 版本发布 - 从Excel插件到Web应用的转变

简介 JSON to Excel 3.0.0 是一个重大更新版本,将原有的Excel插件扩展为完整的Web应用。现在您可以直接在浏览器中使用它,无需安装任何插件。...、下划线(_)、双下划线(__)和斜杠(/) 最大嵌套深度:设置JSON对象展平的最大深度,范围从1到20,或选择无限深度 3....数据或上传JSON文件 点击"转换"按钮 如果需要,可以下载Excel文件 3.2 Excel插件版 在 Excel 2013/2016 或 Excel Online 或 Office 365 中打开一个新的工作表...主页选项卡或插入选项卡 > 加载项 在搜索框中,输入“JSON to Excel” 按照屏幕上的说明安装加载项,您将在主页选项卡中看到一个名为 JSON-to-Excel 的按钮。...视频示例 基于老版本录制的视频 批量处理多个json文件转换成excel的视频

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

    Bookstore靶机实战:从Web枚举到REST API模糊测试的完整攻破

    枚举阶段我使用Nmap开始信息收集,扫描命令包含:-sC:等效于—script=default-sV:探测开放端口的服务/版本信息-p-:扫描所有端口发现22端口运行SSH服务,80和5000端口运行Web...服务:80端口:Apache 2.4.295000端口:Werkzeug 0.14.1 + Python 3.6在Werkzeug服务器发现关键路径:/robots.txt/api研究发现Werkzeug...0.14.1存在可能的RCE漏洞(参考Rapid7漏洞库)。...通过以下方式获取:对/api端点进行参数模糊测试发现v1存在未修补漏洞使用ffuf工具发现可利用参数:ffuf -u http://IP:5000/api/v2/FUZZ -w wordlist.txt...--hc 404权限提升通过获取的PIN码进入调试控制台使用Reverse Shell Cheat Sheet获取反弹shell发现SUID二进制文件try-harder逆向分析发现关键XOR运算:0x5dcd21f4

    16800

    Linux 网络编程:从 Socket API 到极简 Redis 发布订阅 subpub 服务的实现

    引言本文旨在系统性地阐述 Linux 环境下的网络编程基础,重点关注 Socket 应用程序接口(API)的原理与应用。...它提供了一套抽象的 API,允许应用程序将网络通信视为一种特殊的文件 I/O 操作,从而简化了网络数据收发的复杂性。...客户端通过发送特定格式的命令(如 PUB )向指定主题发布消息。服务器负责将发布的消息转发给所有订阅了对应主题的客户端(通常不包括发布者自身)。...返回新描述符 :内核在进程的文件描述符表中分配一个新的文件描述符,指向这个新创建的已连接套接字的文件对象,并将此描述符返回给应用程序。...遍历从 0 到 max_fd 的所有文件描述符 i: i. 使用 FD_ISSET(i, &read_fds) 判断描述符 i 是否在就绪的读集合中。 ii.

    41800

    菜菜从零学习WCF十(序列化)

    因此,往返行程是从XML到对象实例,然后再返回到XML流。   ...关于DataContractSerializer的小实例请点击下载代码示例 第二部分--序列化 简单序列化  对对象进行序列化最基本的方法是将其传递到WriteObject方法。...Web服务同样也使用该序列化引擎。...手动切换到XmlSerializer   将应用程序从ASP.NET Web 服务迁移到WCF时,您可能需要重写现有的、与XmlSerializer兼容的类型,而不是创建新的数据协定类型。   ...当对出现在消息中的XML的精确控制很重要,而Web服务描述语言(WSDL)文档不可用时,例如,在使用必须遵循某个已标准化且已发布的架构(与DataContractSerializer不兼容)的类型来创建服务时

    1.7K30

    消息推送原理

    特点 生产者和消费者必须知道通道资源的位置,否则无法知道从哪里发送(接受)消息(考虑引用Lookup服务进行查找) 以队列形式存在,先进先出 可以存在多个生产者和消费者 关键字解释 Lookup服务 Lookup...优点是跨语言跨平台,C端、S端有更大的独立性,缺点是不支持对象,无法在编译器检查错误,只能在运行期检查。...怎么将流还原为传输格式的?遵循java串行化机制对请求对象进行反序列化。 处理完毕后怎么回应?遵循Mina API进行返回。 MINA是NIO方式的,因此支持异步调用是毫无悬念的。...HTTP 的缺点是协议头较重,一般请求到具体服务器的链路较长,可能会有 DNS 解析、Nginx 代理等。...RPC与Web Service Web Service 是一种基于 Web 进行服务发布、查询、调用的架构方式,重点在于服务的管理与使用。

    4.3K30

    一文搞懂 Web Worker(原理到实践)

    发展历史 简介 曾经的浏览器对于 JS 的处理模式是单线程模式,页面更新要先 串行 做 2 件事情。 随着 Web Worker 的发布,2 件事情可以 并行 完成。 ?...从差一点上看,Worker 线程无法操作 UI,并受主线程控制。...数据传输规模 Structured Clone 的序列化和反序列化执行耗时 主要受数据对象复杂度影响,这很好理解,因为序列化和反序列化至少要以某种方式遍历对象。...数据对象的复杂度本身难易度量,可以用序列化后的数据规模作为参考。...img 其中: 测试数据为嵌套层数 1 到 6 层(payload depth,图中纵坐标),每层节点的子节点 1 到 6 个(payload breadth,图中横坐标)的对象,数据规模从 10B 到

    8.9K32

    讲解Flask API TypeError: Object of type Response is not JSON serializable

    这个错误出现的原因是我们试图将无法被JSON序列化的对象返回给客户端。本篇文章将解释这个错误的原因以及如何解决它。...当我们尝试将无法被序列化的对象返回给客户端时,就会触发"TypeError: Object of type 'Response' is not JSON serializable"的错误。...return resp返回了一个自定义的类的实例:如果我们从API函数中返回了一个自定义的类的实例,而这个类没有实现自己的JSON序列化方法,也会触发该错误。...Flask是一个流行的Python Web框架,它可以用来构建轻量级、可伸缩的Web应用程序。Flask提供了一个用于构建Web应用的开发框架,并且非常适合构建API(应用程序编程接口)。...代码封装:Flask允许将API代码封装为包含特定功能的模块,这样可以更好地组织代码并提供可重用性。你可以将相关的路由、视图函数和其他相关代码组织到一个模块中,便于管理和维护。

    2.5K10

    你确定你的 REST API 真的符合 REST 规范?

    在这篇文章中,我想分享一些例子,教你如何做到: 单元测试更简单、更可靠; 用户输入的预处理和验证; 自动序列化,确保响应一致性; 静态类型 但首先,让我们从 API 规范开始。...catch 到正确的错误信息。...3.模型序列化 几乎所有现代服务器框架都以这样或那样的方式使用对象关系映射(ORM)。这意味着 API 使用的大部分资源是由模型及其实例和集合表示的。...例如,它接受一个模型实例或一个数组,以及所需的模式,然后遍历它以构建序列化的对象。 因此,假设我们需要从 API 返回博客中有帖子的所有用户,包括对这些帖子的评论。...: param1=value¶m2=777¶m3=false 在这种情况下,web 服务器将无法自动识别类型,此时所有数据将是字符串格式,所以解析后你将得到这个对象: { param1:

    1.6K20

    掌阅iReader某站Python漏洞挖掘

    Python web周边还存在redis、memcached、mongod、supervisord等等服务,我们结合这些服务的一系列安全问题,将可以做很多有趣的事情。...目标端口开放了 6379、8080~8086、8889、8079 首先,8080~8086、8889都是web服务,而且是一个站,6379是redis、8079是一个web服务但有http基础认证。...8080~8086、8889:存在弱口令admin - admin1234 6379:存在redis未授权访问 8079:存在弱口令user - 123,登录查看发现是Supervisord管理页面 从易到难...利用redis写一个python的webshell 利用反序列化直接执行python代码 明显,第一种方法需要 1.知道web路径 2.redis有权限写web目录 3.可能要重启web服务(但因为我们有...所以,我写一个python pickle反序列化利用的脚本: #!

    1.1K30

    【Linux篇章】穿越网络迷雾:揭开 HTTP 应用层协议的终极奥秘!从请求响应到实战编程,从静态网页到动态交互,一文带你全面吃透并征服 HTTP 协议,打造属于你的 Web 通信利刃!

    本篇摘要 本篇将介绍何为HTTP协议,以及它的请求与答复信息的格式(请求行,请求包头,正文等),对一些比较重要的部分来展开讲解,其他不常用的即一概而过,从静态网页到动态网页的过渡,最后底层基于TCP实现简单的...我们要明白: 我们上网要么从远端拿数据,要么上传数据到远端(数据:短视频,视频,网页,图片,音频)。 本质: 访问远端linux服务器的某个文件等(底层走的还是TCP那套逻辑)。...比如: 1.3 HTTP 协议请求与响应格式 下面简单认识下http结构: 注意:http协议,序列和反序列化用的是特殊字符进行子串拼接,且不依赖任何第三方库。...;客户端直接报错(浏览器无法解释)。...,当然前提还得是对http相关知识掌握牢固,其次就是考验代码能力了,博主在学习http专题时候历经一个星期多,从学习到编写对应代码,也陷入过对应的几个小时找bug环节,但是最终由于那份坚持还是完成了任务

    31910

    Java资源大全中文版(Awesome最新版)

    Dozer - 使用注释,API或XML配置将数据从一个对象复制到另一个对象的映射器。 JMapper - 使用字节码操作进行闪电快速映射。 支持注释,API或XML配置。...Genson - 强大而易用的Java到JSON转换库。 Gson - 将对象序列化为JSON,反之亦然。 良好的性能与即时使用。...Async Http Client - LibAsynchronous HTTP和WebSocket客户端库。 Comsat - 将标准的Java Web相关API与Quasar光纤和演员集成。...Spring - 提供从依赖注入到面向方面的编程到安全性的许多包。...FlatBuffers - 内存高效的序列化库,可以访问序列化数据,而无需解包和解析。 FST - JDK兼容的高性能对象图序列化。 Kryo - 快速高效的对象图序列化框架。

    3.8K135

    跟着官方文档学Python——Django Rest framework

    前后端分离[把前端的界面效果(html,css,js分离到另一个服务端,python服务端只需要返回数据即可]。前端形成一个独立的网站,服务端构成一个独立的网站 什么是API?...大多数web框架都有相应的插件支持RESTful API。...DELETE http://[hostname]/api/users/[user_id] 删除用户 什么是序列化和反序列化?...两者都是数据转换格式,比如我们在django中获取到的数据默认是模型对象,但是模型对象数据无法直接提供给前端或别的平台使用,所以需要把数据进行序列化,变成字符串或者json数据,提供给别人,这是序列化。...再比如前端js提供过来的json数据,对于python而言就是字符串,我们需要进行反序列化换成模型类对象,这样才能把数据保存到数据库中,这是反序列化。

    3.4K10

    Ajax,jQuery ajax,axios和fetch介绍、区别以及优缺点

    同样也是基于[Promise]对象的。特性:从浏览器中创建 XMLHttpRequests、从 node.js 创建 http 请求、支持 Promise API、拦截请求和响应等。...你只需要简单的创建一个请求对象实例,打开一个URL,然后发送这个请求。当传输完毕后,结果的[HTTP状态]以及返回的响应内容也可以从请求对象中获取。...这里有五种主要的分析 XML 文档的方式: ●1.使用XPath定位到文档的指定部分。 ●2.手工的解析和序列化XML 为字符串或对象。...从 node.js 创建 http 请求。 支持 Promise API。...最简单的用法是只提供一个参数用来指明想fetch()到的资源路径,然后返回一个包含响应结果的promise(一个 Response 对象)。 当然它只是一个 HTTP 响应,而不是真的JSON。

    3.1K62

    深入剖析通信层和RPC调用的异步化(上)

    异步的一些常见误区 1.1.常见的理解误区 在将近10年的平台中间件研发历程中,我们的平台和业务经历了从C++到Java,从同步的BIO到非阻塞的NIO,以及纯异步的事件驱动I/O(AIO)。...服务器也从Web容器逐步迁移到了内部更轻量、更高性能的微容器。服务之间的RPC调用从最初的同步阻塞式调用逐步升级到了全栈异步非阻塞调用。...实际上在Servlet支持异步之前是无法实现的,原因是每个响应对象只有在Servlet的service方法或Filter的doFilter方法范围内有效,该方法一旦调用完成,Tomcat就认为本次HTTP...8.I/O线程将应答设置到Future对象的操作结果中。...2.Netty异步发送HTTP请求消息,如果没有发生I/O异常就正常返回。 3.HTTP请求消息发送成功后,I/O线程构造CompletableFuture对象,设置到RPC上下文中。

    1.3K30

    Rest和RPC接口区别「建议收藏」

    上,但是不严格的说Http+json、Http+xml,常见的http api都可以称为Rest接口。...如果你是对外开放API,例如开放平台,外部的编程语言多种多样,你无法拒绝对每种语言的支持,相应的,如果采用http,无疑在你实现SDK之前,支持了所有语言,所以,现在开源中间件,基本最先支持的几个协议都包含...RPC底层使用Socket接口,定义了一套远程调用方法; HTTP是建立在TCP上,不是使用Socket接口,需要连接方主动发数据给服务器,服务器无法主动发数据个客户端; Web Service提供的服务是基于...web容器的,底层使用http协议,类似一个远程的服务提供者,比如天气预报服务,对各地客户端提供天气预报,是一种请求应答的机制,是跨系统跨平台的。...hessian是一套用于建立web service的简单的二进制协议,用于替代基于XML的web service,是建立在rpc上的,hessian有一套自己的序列化格式将数据序列化成流,然后通过http

    1K10

    Go 语言学习指南:变量、循环、函数、数据类型、Web 框架等全面解析

    ORMs 对象关系映射(ORM)是计算机科学中一种使用面向对象编程语言在类型系统之间转换数据的编程技术。实际上,这创建了一个“虚拟对象数据库”,因此是一种抽象层,可以从编程语言内部使用。...Gin 具有类似Martini的API,并声称速度最高可达40倍。Gin 允许您在Go中构建Web应用程序和微服务。 Web Frameworks Revel Revel 将端点组织到控制器中。...Centrifugo 有通道的概念,因此它是一个面向用户的发布/订阅服务器。 API Clients API客户端是一组从计算机上的应用程序操作的工)用于处理网站时传递用户功能。...使用HTTP请求与REST API进行通信,以便用户可以导航到URL网站。这些URL可以返回存储为API的一部分的特定信息。...它从API定义文件生成路由和序列化,让您专注于应用程序的逻辑,而不是考虑HTTP方法和路径以及JSON之类的琐事。

    92310

    Asp.Net Web API 2第十三课——ASP.NET Web API中的JSON和XML序列化

    前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文描述ASP.NET Web...在ASP.NET Web API中,媒体类型格式化器(Media-type Formatter)是一种能够做以下工作的对象: 从HTTP消息体读取CLR(公共语言运行时)对象 将CLR对象写入HTTP消息体...API从客户端接收了松散结构的JSON,你可以将该请求体解序列化成Newtonsoft.Json.Linq.JObject类型。...这么做的主要原因是: 将你的Web API响应限制到特定的媒体类型。例如,你可能决定只支持JSON响应,而删除XML格式化器。 用一个自定义格式化器代替默认的格式化器。...在设计Web API时,对如何序列化对象进行测试是有用的。

    3K30
    领券