You need to enable JavaScript to run this app. Akka HTTP 如何创建 application/schema+json 等自定义 ContentType
优惠活动
大模型
产品
解决方案
定价
更多

Akka HTTP 如何创建 application/schema+json 等自定义 ContentType

实现方案

第一步:补全MediaTypes层的媒体类型定义

Akka HTTP 中awfc是ApplicationWithFixedCharset的简写工具方法,用于创建绑定固定默认字符集的application类媒体类型。参照已内置的application/json、application/json-patch+json定义格式,先在MediaTypes对象中追加对应两个媒体类型的定义:

// 追加到 MediaType.scala 中的代码
val `application/schema+json` = awfc("schema+json", HttpCharsets.`UTF-8`)
val `application/schema-instance+json` = awfc("schema-instance+json", HttpCharsets.`UTF-8`)

实现逻辑对齐内置规范的点:

  • 两类媒体类型都属于application资源范畴,和已有的JSON衍生媒体类型一样采用awfc方法创建,而非可变字符集的媒体类型定义
  • 默认绑定UTF-8作为字符集,符合JSON Schema相关规范对JSON类资源的编码要求

第二步:创建对应ContentType实例

参照内置application/json的ContentType实现逻辑,直接将对应已定义的MediaType包裹为ContentType,追加到ContentTypes对象中即可:

// 追加到 ContentType.scala 中的代码
val `application/schema+json` = ContentType(MediaTypes.`application/schema+json`)
val `application/schema-instance+json` = ContentType(MediaTypes.`application/schema-instance+json`)

完成上述定义后,这两个ContentType就可以和内置的application/json一样,直接在Akka HTTP的路由匹配、请求/响应实体声明、序列化解析逻辑中调用。


内容的提问来源于stack exchange,提问作者Gabriel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.02 10:45:05