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

【RESTful】RESTful API 接口设计规范 | 示例

CRLF 如: GET/HTTP.1.1 CRLF 请求方法 GET : 请求获取Request-URI 所标识的资源 POST :在Request-URI 所标识的资源后附加新的数据 HEAD...使用RESTful 设计RESTful API 资源路径(URI):RESTful的核心是面向资源,如何规划资源路径很重要 HTTP动词(请求方式):如get,post,delete,put...返回结果:如POST资源的时候,需要返回一个资源实例;GET资源列表时,需要返回一个资源数组; 资源路径 在RESTful架构中,每个网址代表一个资源,所以网址中不能有动词,只能有名词。...一般而言,API中的名词应该使用复数。例如,使用users反映用户资源的URI,而不是使用user。...GET/collections: 返回资源对象的列表(数组) GET/collections/identity : 读取资源时,传入标识符(identity),服务端返回标识符指定的单个资源对象 POST

3.1K20

API自动化测试指南

服务可以处理无效数据和错误数据导致的异常吗? Web服务测试术语 对于大多数测试人员而言,最大的障碍是适应谈论Web服务时使用的术语。...当向用户已经访问过的网站发出请求时,存储在Cookies中的信息将发送回浏览器。以这种方式,网站能够记住用户的先前活动和当前的状态。 理解HTTP将为我们了解大多数API测试工具功能奠定良好的基础。...他们是: 请求行(HTTP方法) 告诉服务器正在发出什么类型的请求。在上面的示例中,我们发出了GET请求,但您可以使用更多请求,具体取决于您需要发出的请求类型。...HTTP方法具有以下选项(前四个方法是最常见的): GET –从指定来源检索数据 POST –将新数据发送到指定的源 PUT –更新指定来源的信息 DELETE –从指定的源中删除数据 TRACE –要求代理人声明自己...选项 –询问有关服务器上可用选项的信息 HEAD –与GET请求类似,但仅发送有关文档的信息 CONNECT –客户端必须使用HTTPS服务器时使用 标头 包含要发送到服务器的其他信息,例如浏览器,操作系统

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

    Java 11 中新的 HttpClient API概览

    概述 Java 11 中引入了新的 HttpClient API。它替代了不适合 HTTP 协议的旧 HttpURLConnection API。...这个新的 API 使用构建器模式和流畅的 API 来创建所需的对象以通过网络进行通信。它还提供以下功能: 支持HTTP2协议。 SSL 加密。 同步和异步通信模型。 支持 HTTP 方法。...API 包含三个主要类: HttClient 用于发送多个请求并通过网络接收响应。 HttpRequest 是一个不可变的类,表示要发送的 http 请求。...可以为特定的 HTTP 方法配置它并附加正文(如果有)。 HttpResponse 描述来自 Web 服务器的响应。它在提交请求时由 HttpClient 返回。...Customer 只是一个具有几个成员的不可变 POJO 类。在 HttpClient API 的帮助下,我们将在与服务交互时执行 CRUD 操作。 1.获取客户列表 第一个场景是获取所有客户的列表。

    95920

    重学springboot系列番外篇之RestTemplate

    设置超时时间 GET请求使用详解 getForObject() 方法 以String的方式接受请求结果数据 以POJO对象的方式接受结果数据 以数组的方式接收请求结果 使用占位符号传参的几种方式 getForObject...如果你的Web服务API基于标准的RESTful风格设计,使用效果将更加的完美 根据Spring官方文档及源码中的介绍,RestTemplate在将来的版本中它可能会被弃用,因为他们已在Spring...JSONPlaceholder是一个提供免费的在线REST API的网站,我们在开发时可以使用它提供的url地址测试下网络请求以及请求参数。...:" + postDTOs.length); } 请求的结果被以数组的方式正确接收,输出如下: 数组长度:100 使用占位符号传参的几种方式 以下的几个请求都是在访问"http://jsonplaceholder.typicode.com...使用HEAD方法获取HTTP请求头数据 使用headForHeaders()API 获取某个资源的URI的请求头信息,并且只专注于获取HTTP请求头信息。

    5.3K22

    Java 编程问题:十三、HTTP 客户端和 WebSocket API

    指定 HTTP 方法:编写指定请求的 HTTP 方法的程序(例如GET、POST、PUT、DELETE)。 设置请求体:编写一个程序,使用 HTTP 客户端 API 为请求添加正文。...设置重定向策略:编写一个程序,根据需要使用 HTTP 客户端 API 自动重定向。 发送同步和异步请求:编写一个程序,在同步和异步模式下发送相同的请求。...254 指定 HTTP 方法 我们可以使用HttpRequest.Builder中的以下方法指示请求使用的 HTTP 方法: GET():此方法使用 HTTPGET方法发送请求,如下例所示: HttpRequest...API 在HttpRequest.BodyPublishers类中附带了此接口(BodyPublisher的几个实现,如下所示: BodyPublishers.ofString() BodyPublishers.ofFile...API 在HttpResponse.BodyHandlers类中附带了此接口(BodyHandler的几个实现,如下所示: BodyHandlers.ofByteArray() BodyHandlers.ofFile

    7.5K21

    Java11震撼发布了,我们该怎么办?

    Java 9 -11 引入的新语法和API 本地变量类型推断 Java 10 就已经引入了新关键词var,该关键词可以在声明局部变量的时候替换类型信息。本地(local)是指方法内的变量声明。...BodyHandlers定义响应体的预期类型(例如,字符串,字节数组或文件): var request = HttpRequest.newBuilder() .uri(URI.create("https...与BodyHandler类似,您使用BodyPublishers定义作为请求主体发送的数据类型,如字符串,字节数组,文件或输入流: var request = HttpRequest.newBuilder...("A", 1, "B", 2); System.out.println(map); // {B=2, A=1} Java 11中的不可变集合仍然使用Collection API中的老接口。...可喜的是,如果尝试改变不可变集合,Intellij IDEA会通过发出警告。 Streams Streams是在Java 8中引入的,Java 9增加了三个新方法。

    74520

    springboot第30集:springboot集合问题

    其他cat api参考官方文档: www.elastic.co/guide/en/el…[1] Search APIs 搜索数据,查询语法多,功能强大 REST request URI: 轻便快速的URI...(感觉不够优雅) 注册一个 PreSerializeFilter 把 Servers 清空 在Swagger UI中,您可以使用servers配置指定API的服务器信息。...这使您能够在Swagger UI中定义和切换不同的服务器配置,以便与不同的API环境进行交互。...image.png 如果你希望在Spring Boot中,当数据库中没有对应值时,仍然返回字段但其值为空,你可以使用Jackson库的另一个配置选项。...当数据库中没有对应值时,该属性将被序列化为空字符串而不是null。 请注意,non_empty选项除了将null值排除在外,还会排除空字符串、空集合、空数组等。

    1.1K20

    HTTP状态码列表

    [2] 当且仅当后续的请求所使用的方法是GET或者HEAD时,用户浏览器才可以在没有用户介入的情况下自动提交所需要的后续请求。...注意:虽然RFC 1945和RFC 2068规范不允许客户端在重定向时改变请求的方法,但是很多现存的浏览器将302响应视作为303响应,并且使用GET方式访问在Location中规定的URI,而无视原先请求的方法...通常将太多数据的结果编码为GET请求的查询字符串,在这种情况下,应将其转换为POST请求。[44]这比较少见,通常的情况包括: 本应使用POST方法的表单提交变成了GET方法,导致查询字符串过长。...重定向URI“黑洞”,例如每次重定向把旧的URI作为新的URI的一部分,导致在若干次重定向后URI超长。 客户端正在尝试利用某些服务器中存在的安全漏洞攻击服务器。...这类服务器使用固定长度的缓冲读取或操作请求的URI,当GET后的参数超过某个数值后,可能会产生缓冲区溢出,导致任意代码被执行[45]。没有此类漏洞的服务器,应当返回414状态码。

    1.2K30

    REST 架构-架构快速进阶教程

    因此,REST 定义了在开发 RESTful API 时要遵循的一组主要的、一般的约束。让我们定义它们。 2.1. 约束 统一的界面。应在请求中确定具体资源。...HTTP 方法描述客户端要对资源执行的操作。有四种最常用的基本方法:获取、发布、放置和删除。让我们定义它们。 第一个,GET用于读取资源。服务器返回给定 URI 的资源。GET 方法不包含正文。...数据在正文中发送。创建资源后,服务器应使用其 URI 进行响应。 下一个,PUT类似于POST。虽然,它有很大的不同。它用于更新现有资源。它用传输的数据覆盖整个资源。...因此,它表明考虑到 REST 约束,API 的质量很好。 0级被称为痘沼泽。在这个层面上,API并没有使用HTTP协议的全部潜力,通常,它只使用POST和GET方法。因此,HTTP 协议仅用作传输层。...在第 2 级,API 使用除 GET 和 POST 之外的其他 HTTP 方法,例如 PUT、PATCH 或 DELETE。

    29310

    怎么在Openresty中REST?

    简单描述整体过程,是在服务器端口接收由客户端的发送HTTP的GET与POST请求,并携带传递JSON格式协议的数据,返回的数据形式也是JJSON形式, JSON协议有使用只是RESTful API风格的接口设计的一个样式...一般在Openresty中可能用两种形式实现, 一种是直接在conf里实现,一种是通过Lua脚本实现。还可以直接用Moonscript实现,用Lua封装简化一个API接口创建的过程。...上面的三个步骤只是解决了基本的JSON数据返回的问题,并没有考虑到与路由结合,简单快速的实现方法就是在conf的location设置中直接嵌入lua代码。...因此,我们用Lua实现的了一个路由数组的,进行用户路由的线性配对,如果用户当前请求的URI与路由表中的URI一致,就对应执行与数组下标对应的另一个执行函数,并使用用户请求时传递参数,针对路由URI配对的算法和优化设计可以后续有更丰富的实现...我们截取了简易Lua Web框架,根据请求中的URI与函数对应执行,并返回JSON数据的一个片段,这个使用Lua语言特有的闭包特性来完成URI到函数过程执行的过程,更多基础可以参考https://lua.ren

    2.9K20

    Fegin

    与Fegin相遇之前  在我们平时的工作中,我们经常会遇到要调用内部API或者其他第三方服务的API,在遇到Fegin之前我们基本会使用以下几种方式。...API 的基本信息,比如请求类型是 GET 还是 POST,请求的 URI 是什么。...在发送请求之前都会调用该接口的apply方法,所以我们也可以通过实现该接口来记录请求发出去的时间点。...在方法上有 @RequestLine 注解,定义了请求类型和请求的 URI,URI 中有对应的参数占位符,返回值是集合,集合中是对应的返回结构对象。...使用原生的 Feign 来调用 API,只需要通过特定的注解来描述调用的 API 信息,这些信息的请求方式可以是 GET 或者 POST 等,请求参数是什么?请求的地址是什么?

    2.3K20

    restful最佳实践--接口规范

    菜单名}/{接口名}/:param 不能使用大写,用中横线 - 不用下划线 _ ; 使用名词表示资源集合,使用复数形式(为确保所有API URIs保持一致),不能使用动词; 每个资源都至少有一个标识它的...URI,同时应该遵循一个可预测的层次结构来提高可理解性,从而提高可用性; 无需在URI中增加版本号,通过HTTP请求头信息的字段中进行区分(或者在URI包含主版本信息,同时请求头包含子版本信息。...通过请求体携带资源发送给服务器。注意:在资源ID由客户端而不是由服务器选择的情况下,也可以使用PUT来创建资源。修改成功返回200,创建成功返回201。建议使用post进行创建新资源。...body中便于使用) "status": "success/fail/error", // 见下述表格 "content/data": []/{}, // 多条记录使用JSON数组,单条记录使用...JSON对象 "message": [] // 状态为error或fail时,对应的错误信息 } status说明 状态 说明 fail 返回码为 500-599 error 返回码为

    2.3K42

    restful api接口规范和服务调用的区别_rest接口规范

    因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现”APIFirst”的设计思想。...REST本身并没有创造新的技术、组件或服务,而隐藏在RESTful背后的理念就是使用Web的现有特征和能力, 更好地使用现有Web标准中的一些准则和约束。...URI URI 表示资源,资源一般对应服务器端领域模型中的实体类。 URI规范 不用大写; 用中杠-不用下杠_; 参数列表要encode; URI中的名词表示资源集合,使用复数形式。...过深的导航容易导致url膨胀,不易维护,如 GET /zoos/1/areas/3/animals/4,尽量使用查询参数代替路径中的实体导航,如GET /animals?...API的演进 版本 常见的三种方式: 1.在uri中放版本信息:GET /v1/users/1 2.Accept Header:Accept: application/json+v1 3.自定义

    2.3K10

    一张图搞清楚HTTP状态码

    在浏览器请求网页或API请求数据时常见此状态码。简单来说,它告诉客户端:“你的请求已经成功处理,并且所请求的资源在消息体中。” 201 Created 该请求已成功,并因此创建了一个新的资源。...这通常用于在POST请求之后进行,指示客户端向另一个URI发出GET请求以检索操作结果。...当收到307响应时,客户端应该对新的URI重新发起请求,但是与302不同的是,307保证请求方法和请求体不会改变(例如,POST请求不会变成GET)。...405 Method Not Allowed 客户端请求中的方法被禁止,这个状态码表示服务器已经识别了请求的方法(如GET、POST、PUT等),但该方法对于请求的资源是禁用的。...500错误是一个“服务器端”错误,意味着问题出在服务器上,而不是客户端请求有误。这可能是由于服务器程序错误、配置问题或资源不足导致。

    67610

    RESTful API 最佳实践

    例子:在HTTP中使用GET方法通常用于从服务器获取资源,无论调用多少次产生的额外效果都是从服务器获取资源,所以GET具有幂等性;而POST方法通常用于提交数据在服务器上创建一个资源,由于最终创建的结果每次都是不同的...URI 应该将API部署在专用域名之下:https://api.example.com 不用大写 用中杠-不用下杠_; 参数列表要encode; URI中不应该出现动词,动词应该使用HTTP方法表示,但是如果无法表示...,也可使用动词,例如:search没有对应的HTTP方法,可以在路径中使用search,更加直观; URI中的名词表示资源集合,使用复数形式; 虽然/在URI中表达层级,但是避免为了追求REST导致层级过深...API版本控制 在URI中存放:GET /v1/comments; 客户端在Accept Header中存放:Accept: application/vnd.github.v3+json,服务器自定义Header...在进行分页查询时可以返回下一页的URI,如果没有说明服务器已经取到最后一条数据了,客户端可以减少不必要的请求以及URI的构造,建议在分页的情况下使用。

    2.2K31

    常见的HTTP状态码

    该响应代码表明:客户端应重新发送初始请求,并在请求中附上第一次请求时未提供的(可能很大或者包含敏感信息的)表示。客户端这次发送的请求不会被拒绝。...这个响应代码可用于条件HTTP请求(conditional HTTP request).如果客户端在发送GET请求时附上了一个值为Sunday的If-Modified-Since报头,而客户端所请求的表示在服务器端自星期日...响应报头:Location报头里包含代理的URI。 306 未使用 重要程度:无 306 响应代码没有在HTTP标准中定义过。 307(“Temporary Redirect”) 重要程度:高。...客户端试图使用一个本资源不支持的HTTP方法。例如:一个资源只支持GET方法,但是客户端使用PUT方法访问。...若客户端在发送GET或HEAD请求时指定了If-None-Match,并且服务器不满足该前提条件的话,那么响应代码不是412而是304,这是实现条件HTTP GET的基础。

    3.1K30

    2022秋招前端面试题(五)(附答案)

    数组和字符串的转换方法:toString()、toLocalString()、join() 其中 join() 方法可以指定转换为字符串时的分隔符。...数组连接的方法 concat() ,返回的是拼接好的数组,不影响原数组。数组截取办法 slice(),用于截取数组中的一部分返回,不影响原数组。...的缺点:fetch只对网络请求报错,对400,500都当做成功的请求,服务器返回 400,500 错误码时并不会 reject,只有网络错误这些导致请求不能完成时,fetch 才会被 reject。...一般在只需要从客户端往服务器端发送信息,而服务器端不需要往客户端发送内容时使用。(3)206 Partial Content该状态码表示客户端进行了范围请求,而服务器端执行了这部分的 GET 请求。...(3)303 See Other该状态码表示由于请求对应的资源存在着另一个 URI,应使用 GET 方法定向获取请求的资源。

    74740

    从100到511的这些数字,HTTP状态码背后的秘密你知道多少?

    当前的信息可能是原始版本的子集或者超集。例如,包含资源的元数据可能导致原始服务器知道元信息的超集。使用此状态码不是必须的,而且只有在响应不使用此状态码便会返回200 OK的情况下才是合适的。...POST改为GET307 Temporary Redirect严格重定向必须保持原请求方法建议:API开发中优先使用307,避免方法被意外转换303 See Other服务器发送此响应,以指示客户端通过一个...GET 请求在另一个 URI 中获取所请求的资源。...307 Temporary Redirect服务器发送此响应,以指示客户端使用在前一个请求中使用的相同方法在另一个 URI 上获取所请求的资源。...此响应旨在防止'丢失更新'问题,即当第三方修改服务器上的状态时,客户端 GET 获取资源的状态,对其进行修改并将其 PUT 放回服务器,从而导致冲突。

    1K10

    Java Response 返回值处理的最佳实践:如何高效获取与操作响应数据

    如何处理不同格式的响应数据(如JSON、XML等)?如何处理响应中的异常情况,如404、500错误?关键技术点:使用HttpURLConnection或HttpClient处理原生HTTP请求。...异步处理复杂:虽然Java提供了同步与异步的请求方式,但异步处理相对复杂,尤其是在需要处理大量并发请求时。核心类方法介绍1....使用 .uri(new URI("https://api.example.com/data")) 设置请求的 URI。使用 .GET() 指定请求方法为 GET。...小结这个测试用例的目的是确保使用 Java HttpClient 发送 HTTP GET 请求到指定的 URI 能够收到预期的响应。...全文小结本文详细介绍了Java中处理HTTP请求响应值的多种方法,包括使用HttpURLConnection、HttpClient、RestTemplate等工具进行请求发送和响应数据的处理。

    2.5K31
    领券