如何使用 akka http 为 application/schema+json 创建 ContentType?

问题描述

在 akka-http 中有

//ContentType.scala
  val `application/json` = ContentType(MediaTypes.`application/json`)

同样,我如何为

创建一个 ContentType
  • application/schema+json
  • application/schema-instance+json

参考:

//MediaType.scala
  val `application/json`            = awfc("json",HttpCharsets.`UTF-8`,"json")
  val `application/json-patch+json` = awfc("json-patch+json",HttpCharsets.`UTF-8`)

解决方法

https://doc.akka.io/docs/akka-http/current/common/http-model.html#registering-custom-media-types

也许是这样的:

object SchemaContentTypes {
  val `application/schema+json`          = ContentType(SchemaMediaTypes.`application/schema+json`)
  val `application/schema-instance+json` = ContentType(SchemaMediaTypes.`application/schema-instance+json`)
}

object SchemaMediaTypes {
  val `application/schema+json`          =
    MediaType.customWithFixedCharset("application","schema+json",HttpCharsets.`UTF-8`,"schema.json")
  val `application/schema-instance+json` =
    MediaType.customWithFixedCharset("application","schema-instance+json",HttpCharsets.`UTF-8`)
}