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

REST内容类型:它应该基于扩展名还是Accept头?

名词解释:

  • REST (Representational State Transfer):表述性状态转移
  • RESTful API (Representational State Transfer API):表述性状态转移 API
  • HTTP (HyperText Transfer Protocol):超文本传输协议
  • GET (HTTP Request Method):获取请求方法
  • POST (HTTP Request Method):提交请求方法
  • PUT (HTTP Request Method):更新请求方法
  • DELETE (HTTP Request Method):删除请求方法
  • Content-Type (HTTP Header):内容类型头
  • Accept (HTTP Header):接受头
  • URL (Uniform Resource Locator):统一资源定位符
  • HTTP Method:HTTP请求方法
  • Header:头部信息
  • Body:主体信息
  • Extension:扩展名
  • MIME (Multipurpose Internet Mail Extensions):多用途互联网邮件扩展

概念解释:

  • 状态转移:指从一个状态切换到另一个状态,通常用于描述对象或数据在系统中的流转过程。
  • RESTful API:使用HTTP协议进行通信的API,可以用于构建Web服务。
  • 扩展名:文件的一种标识,通常用于指示文件的类型,例如.html、.txt、.jpg等。
  • Accept头:HTTP请求中用于指定客户端接受的数据类型。

分类:

  • GET:用于获取资源,例如获取一个网页的内容。
  • POST:用于创建资源,例如创建一个新的账户。
  • PUT:用于更新资源,例如更新一个已有的账户信息。
  • DELETE:用于删除资源,例如删除一个账户。
  • HEAD:用于获取资源的头部信息,与GET方法类似,但是只返回头部信息。
  • OPTIONS:用于获取资源的支持方法,例如获取一个网页的支持方法。

优势:

  • 无状态:每个请求都是独立的,服务器不会存储客户端的状态。
  • 缓存支持:客户端可以缓存响应,以响应后续的请求。
  • 扩展性:可以通过增加新的路径、方法或参数来扩展API。
  • 易于维护:API的规格和文档可以通过HTTP协议自动生成,使得API的维护变得容易。

应用场景:

  • Web应用:RESTful API可以用于Web应用的开发,例如创建一个在线商店、社交网络等。
  • 移动应用:RESTful API可以用于开发移动应用,例如创建一个手机聊天应用、手机购物应用等。
  • 物联网:RESTful API可以用于物联网应用的开发,例如智能家居控制系统。

推荐的腾讯云相关产品:

  • 腾讯云API:提供各种API,支持各种操作,例如创建、启动、停止云服务器等。
  • 腾讯云COS:提供对象存储服务,可以用于存储和获取各种类型的数据。
  • 腾讯云数据库:提供多种类型的数据库,例如MySQL、PostgreSQL、MongoDB等。
  • 腾讯云短信服务:提供短信服务,可以用于发送各种类型的短信。
  • 腾讯云CDN:提供内容分发网络,可以用于分发各种类型的内容,例如图片、视频等。

产品介绍链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ContentNegotiation内容协商机制(一)---Spring MVC内置支持的4种内容协商方式【享学Spring MVC】

支持4种协商方式: HTTPAccept 扩展名 请求参数 固定类型(producers) 说明:以下示例基于Spring进行演示,而非Spring Boot 方式一:HTTPAccept...现在你应该知道,这样做显然是没用的(至于为何没用,希望读者做到了心知肚明),只能使用Accept这个头来指定~~~ 第一种协商方式是Spring MVC完全基于HTTP Accept首部的方式了。...优缺点: 优点:理想的标准方式 缺点:由于浏览器的差异,导致发送的Accept Header可能会不一样,从而得到的结果不具备浏览器兼容性 方式二:(变量)扩展名 基于上面例子:若我访问/test/1...这就是Spring Boot默认的对异常处理方式:使用的就是基于 固定类型(produces)实现的内容协商。...~ 总结 内容协商在RESTful流行的今天还是非常重要的一块内容,它对于提升用户体验,提升效率和降低维护成本都有不可忽视的作用,注意三的优先级为:后缀 > 请求参数 > HTTP首部Accept 一般情况下

1.8K20

Spring Web MVC框架(九) XML和JSON视图与内容协商

内容协作 所谓内容写作,指的是Spring可以根据请求的扩展名、查询参数或者Accept头等信息,决定使用哪种视图展示数据。...Spring会先查找文件扩展名,根据扩展名来返回相应的视图;如果扩展名不存在,就会根据Accept来判断。...指定是否忽略Accept类型。 favorPathExtension。指定是否使用路径扩展名判断媒体类型。 favorParameter。指定是否使用参数判断媒体类型。...如果指定了路径扩展名,那么访问/users.xml会返回XML,访问/users.json会返回JSON;如果指定了Accept,那么当Accept包含application/json会返回JSON...由于一般内容协定常用于Rest程序,所以最常用的还是通过路径扩展名Accept来判断媒体类型

87410

Resultful Url 设计原则

例如:RFC 3986 中将 URI 定义为区分大小写,但协议和域名除外。...规则 6:文件扩展名不应包含在 URI 中 在 Web 上,字符(.)通常用于分隔 URI 的文件名和扩展名。 一个 REST API 不应在 URI 中包含人造的文件扩展名,来表示消息实体的格式。...相反,他们应该通过 header 头中 Content-Type 属性的媒体类型来确定如何处理实体的内容。...应鼓励 REST API 客户端使用 HTTP 提供的格式选择机制,即请求 header 中的 Accept 属性。...为了实现简单的链接和调试的便捷,REST API 也可以通过查询参数来支持媒体类型的选择。 规则 7:端点名称是单数还是复数? 复数 特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。

32410

REST API URI 设计的七准则

当你没有取消引用时,你不应该查看 URI 字符串的内容以获取其他信息。 - Tim Berners-Lee 客户端必须遵循 Web 的链接范例,将 URI 视为不透明标识符。...规则#6:文件扩展名不应包含在 URI 中 在 Web 上,字符(.)通常用于分隔 URI 的文件名和扩展名。 一个 REST API 不应在 URI 中包含人造的文件扩展名,来表示消息实体的格式。...相反,他们应该通过 header 头中 Content-Type 属性的媒体类型来确定如何处理实体的内容。...应鼓励 REST API 客户端使用 HTTP 提供的格式选择机制,即请求 header 中的 Accept 属性。...为了实现简单的链接和调试的便捷,REST API 也可以通过查询参数来支持媒体类型的选择。 规则#7:端点名称是单数还是复数? 这里采用保持简单的原则。

1.3K40

使用.NET8中的.http文件和终结点资源管理器

HTTP 文件介绍 2.1 简介 HTTP 文件是一种扩展名为 ".http" 的文件,通常包含一个 HTTP 请求或响应的文本表示。...{{userId}} Authorization: Bearer {{authToken}} 简要介绍: 1.变量定义: 在文件开头,我们定义了一些变量,例如基本 URL、授权令牌、用户 ID 和内容类型...我们使用相同的授权令牌和内容类型变量,同时在请求体中提供 JSON 格式的用户数据。4.更新用户信息: 此部分定义了一个 PUT 请求,用于更新特定用户的信息。...这可能涉及修改请求、请求方法和请求体等内容,以确保请求符合实际需求。 4....REST Client 是一款用于 Visual Studio Code 的扩展插件,允许开发者和测试人员直接在编辑器中发送 HTTP 请求并查看响应。

41210

5个REST API安全准则

REST允许通过简单的URL(而不是复杂的请求主体或POST参数)与基于web的系统交互。...服务器不应该猜测Content-Type 应该总是检查Content-Type内容是否是相同的类型。...(3)验证响应类型 REST服务通常允许多种响应类型(例如application / xml或application / json,客户端通过请求中的Accept指定响应类型的首选顺序)。...不要简单地将Accept复制到响应的Content-type。 如果Accept报头没有包含允许的类型中任何一个,则需要拒绝请求(理想情况下使用406 Not Acceptable响应)。...(3)XML编码 XML绝不应该由字符串连接构建。 应该始终使用XML序列化器构造。 这确保发送到浏览器的XML内容是可解析的,并且不包含XML注入。

3.7K10

《ASP.ENT Core 与 RESTful API 开发实战》-- 读书笔记(第1章)

第 1 章 REST 简介 1.1 API 与 REST API 是一个系统向外暴露或公开的一套接口,通过这些接口,外部应用程序能够访问该系统 REST 是一种基于资源的架构风格,任何能够命名的对象都是一个资源...后面的参数部分 锚部分,也称片段,在 “#” 后面的内容,用于指明一个资源的特定的位置 当 HTTP 服务器对请求返回响应时,它不仅仅返回资源本身,也会在响应中指明资源的内容类型(Content Type...),也称为媒体类型 要指定内容类型,HTTP 依赖于 MIME 标准,表示文档的性质和格式 常用的 MIME 类型如下: text/plain: 纯文本 text/html: HTML image/jepg...,此时可以适当地在 URI 中包含动词,但仍然应该基于一个资源的标识符 查询字符串可以用来对资源进行筛选、搜索或分页查询 URI 应使用小写字母 URI 中可以使用中划线 ”-“ 来增加其可读性 URI...version=1 使用自定义消息,如 Accept-version:v1 使用 Accept 消息,如 Accept:application/json;v=2.0

88010

REST API URI的七大设计原则

在不取消引用时,就不应该查看URI字符串的内容以获取其他信息。 ——蒂姆·伯纳斯 - 李 客户端必须遵循Web的链接范例,将URI视为不透明标识符。...规则6:文件扩展名不应包含在URI中 在Web上,(.)字符通常用于分隔URI的文件名和扩展名REST API不应在URI中包含人造文件扩展名,来指示邮件实体的格式。...相反,他们应该依赖通过Content-Type中的header传递media type,来确定如何处理正文的内容。...应鼓励REST API客户端使用HTTP提供的格式选择机制Accept request header。 为了是链接和调试更简单,REST API应该支持通过查询参数来支持媒体类型的选择。...规则7:端点名称是单数还是复数? keep-it-simple的原则在这里同样适用。

1.8K60

webview拉起拍照和录像的爬坑终结篇

属性,需要我们关注: accept 属性是一个字符串,定义了文件 input 应该接受的文件类型。...表示在 file 类型的 元素中用户可以选择的文件类型。每个唯一文件类型说明符可以采用下列形式之一: 一个以英文句号(".")开头的合法的不区分大小写的文件名扩展名。...这里还有一个属性值得我们去关注: capture 属性是一个字符串,如果accept 属性指出了 input 是图片或者视频类型,则指定了使用哪个摄像去这些数据。...值 :user 表示应该使用前置摄像和/或麦克风。 值: environment 表示应该使用后置摄像和/或麦克风。...基于具体业务场景,比如做人脸识别,有时候还是有一定的帮助的。

3.6K40

REST API设计指导——译自Microsoft REST API Guidelines(四)

表的请求应该遵循微软REST API服务规范。使用这些标不是必须的,但是如果用到,那么它们必须使用一致。...Accept| Content type |The requested content type for the response such as:  接收 | 内容类型 | 请求响应的请求内容类型,例如...request body (PUT/POST/PATCH)  Content-Type | 内容类型 | 根据MIME类型的请求对应的主体(put/post/patch) PS:常见的,我们通过内容类型...接受PII参数的服务——无论是在URL中还是作为头部——应该符合由其组织的领导层指定的隐私策略。这通常包括推荐的客户端传输的标,并且实现遵循特殊的预防措施,以确保正确处理日志和其他服务数据的收集。...在HTTP中,客户端应该使用Accept请求响应格式。 服务端可以选择性的忽略,即使这不是典型的良好的服务。 客户端可以发送多个Accept,服务可以选择其中一个格式进行返回。

1.9K50

Microsoft REST API指南

Accept Content type 响应请求的内容类型,如: - application/xml - text/xml - application/json - text/javascript...Accept-Language “en”, “es”, etc. 指定响应的首选语言。不需要服务来支持这一点,但是如果一个服务支持本地化,那么必须通过Accept-Language来支持本地化。...为了解决这些限制,服务也应该接受这些PII参数作为URL的一部分,与本指导原则的其余部分保持一致。 接受PII参数(无论是在URL中还是作为标)的服务 应该符合其组织的隐私保护原则。...下面的代码基于OData v4 JSON规范。但是,非常通用,不需要特定的OData构造。即使api没有使用其他OData结构,也应该使用这种格式。 错误响应必须是单个JSON对象。...其他任何内容类型都会引发预检请求。 服务不得以避免CORS预检请求的名义违反其他API指南。由于内容类型的原因,大多数POST请求实际上需要预检请求。

4.5K10

为什么你一直在写假的测试用例?

测试媒体类型 4. 测试接口返回的JSON 5. 测试利器 6. 依赖 7. 总结 1. 概览 本教程重点介绍使用自动化IT(集成测试)测试REST API的基本原则和机制。...在测试REST资源时,通常会有一些正交的职责需要关注: HTTP响应代码 响应中的其他HTTP 有效负载(JSON,XML) 每个测试用例应该只关注单个职责,并包含一个断言。...Accept一起测试——客户端通过Accept请求资源特定类型的表述,这是服务器应该遵守的。...测试着重于确保REST API的正确性,而不必涉及更复杂的情况,譬如,以下内容都没有涉及:API的可发现性、对同一资源使用不同的表述等等。...所有这些示例和代码片段都可以在Github上找到——这是一个基于maven的项目,因此应该很容易导入和运行。

22920

如何在Nginx配置Gzip

Nginx不会分析文件内容,他只分析文件后缀,所以,只是查找文件扩展名以确定其MIME类型,这样nginx就会对不同的文件作出不同的压缩处理。 因为只是测试,所以测试文件的内容无关紧要。...这将让我们验证Nginx是否使用压缩,压缩一种类型的文件而不是其他类型的文件。 使用创建truncate在默认Nginx目录中命名的1 KB文件test.html。扩展名表示它是一个HTML页面。...该命令从我们的Nginx服务器请求一个文件,并指定使用HTTPAccept-Encoding: gzip)来查找gzip压缩的内容。...curl -H "Accept-Encoding: gzip" -I http://localhost/test.html 作为响应,您应该看到几个HTTP响应标: Nginx响应 HTTP/1.1...curl -H "Accept-Encoding: gzip" -I http://localhost/test.jpg 结果应该与以前略有不同: Nginx响应 HTTP/1.1 200 OK Server

2K40

如何在Ubuntu 14.04上将gzip模块添加到Nginx

为了决定通过网络提供什么样的文件,Nginx不会分析文件内容,因为它不够快。相反,只是查找文件扩展名以确定其MIME类型,MIME类型表示文件的用途。 由于这种行为,测试文件的内容是不相关的。...这将允许我们验证Nginx是否在应该使用压缩的地方使用压缩,压缩一种类型的文件,而不使用其他类型的文件。 使用truncate在默认的Nginx目录中创建一个名为test.html的一千字节文件。...该命令从我们的Nginx服务器请求一个文件,并指定为gzip压缩内容提供HTTPAccept-Encoding: gzip)是可以的。...curl -H "Accept-Encoding: gzip" -I http://localhost/test.html 作为响应,您应该看到几个HTTP响应标: Nginx响应 HTTP/1.1...我们可以像在步骤2中所做的那样,对每个测试文件使用curll并检查内容编码Content-Encoding: gzip标的输出。

94500

ContentNegotiation内容协商机制(二)---Spring MVC内容协商实现原理及自定义配置【享学Spring MVC】

HeaderContentNegotiationStrategy Accept Header解析:根据请求Accept来协商。...由子类去决定:你的扩展名是来自于URL的参数还是来自于path… ParameterContentNegotiationStrategy 上面抽象类的子类具体实现,从名字中能看出扩展名来自于param参数...需要注意的是:基于param的此策略Spring MVC虽然支持,但默认是木有开启的,若想使用需要手动显示开启 PathExtensionContentNegotiationStrategy 扩展名需要从...这个管理器的作用特别像之前讲述的xxxComposite这种“容器”管理类,总体思想是管理、委托,有了之前的基础了解起他还是非常简单的了。...内容协商的配置:ContentNegotiationConfigurer 虽然说默认情况下Spring开启的协商支持能覆盖我们绝大部分应用场景了,但不乏有的时候我们也还是需要对进行个性化的,那么这部分就讲解下对的个性化配置

1.9K30

如何在CentOS 7上将gzip模块添加到Nginx

为了判断什么文件通过网络提供,Nginx不会分析文件内容因为它不够快,相反,只是查找文件扩展名以确定其MIME类型 来表示文件的用途。 由于此行为,测试文件的内容无关紧要。...这将允许我们验证Nginx是否应该使用压缩,压缩一种类型的文件而不是其他类型的文件。 通过truncate在默认Nginx目录中创建1 KB的文件,命名为test.html。...下面的命令是从Nginx服务器请求一个文件,并指定使用HTTP标Accept-Encoding: gzip)提供可用的 gzip 压缩。...curl -H "Accept-Encoding: gzip" -I http://localhost/test.html 接下来,您应该看到几个HTTP响应标: HTTP/1.1 200 OK Server...该gzip模块是Nginx中的核心模块,这意味着已经安装但必须启用和配置。在CentOS 7上安装新的Nginx时,将自动加载/etc/nginx/conf.d目录中的扩展名为.conf的所有文件。

1.9K10

HTTP协议详解

MIME类型有很多种,例如,下面的这些 MIME类型都可以作为Accept字段的值。 ? 2....需要注意的是,Accept-Encoding 和Accept消息不同,Accept请求指定的MIME类型是指解压后的实体内容类型,Accept-Encoding消息指定的是实体内容压缩的方式。...如果服务器想告诉客户机不要使用Range字段,则使用下面的信息 Accept-Range: none 如果服务器想告诉客户端可以使用以bytes为单位的Range请求,则应该使用下面的信息: 2....大多数服务器会在配置文件中设置文件扩展名与MIME类型的映射关系,从而可以根据请求资源的扩展名自动确定 Content-Type的 MIME类型。...其中元素的子元素用于指定文件的扩展名,子元素用于指定该文件扩展名映射的 MIME类型

78510

细说RESTful API之入门介绍

要点及标准 - 需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,XML以及HTML这些现有的广泛流行的协议和标准。...- 资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式,如:JSON。...* 无状态(Stateless):通信的会话状态(Session State)应该全部由客户端负责维护。 * 缓存(Cache): 响应内容可以在通信链的某处被缓存,以改善网络效率。...- 传输的资源:Web服务接受与返回的互联网媒体类型,比如:JSON,XML,YAML等。...而且,必要的时候可通过HTTP消息Accept和Content-Type描述传递的内容。 最后,REST API还应该进行版本管理。 3.

62820

如何使用Spring和Java配置构建一个REST API

试图将REST范式硬塞进旧的模式,这是有问题的。Spring团队看到了这一点,并从spring3.0开始,便提供了对REST一流的支持。...这种基于HttpMessageConverter和注解的新方法更轻量级、更容易实现。通过提供合理的默认值,在最少配置的情况,让您从RESTful服务中获取到期望的内容。...内容协商将主要基于Accept来选择使用哪个可用的转换器,但是也可以使用其他HTTP来确定资源特定格式的表述。 6....API的一部分,因此应该只在对应于REST的适当层中使用;例如,如果存在DAO/DAL层,则不应该直接使用上面的自定义异常。...这是一个基于maven的项目,因此应该很容易导入和运行。

2K30
领券