默认情况下,Micronaut 控制器操作使用 application/json。 @Consumes 注释或任何 HTTP 方法注释的 consumes 成员支持使用其他内容类型。
Java |
Groovy |
Kotlin |
import io.micronaut.context.annotation.Requires;
import io.micronaut.http.HttpResponse;
import io.micronaut.http.MediaType;
import io.micronaut.http.annotation.Consumes;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Post;
@Controller("/consumes")
public class ConsumesController {
@Post // (1)
public HttpResponse index() {
return HttpResponse.ok();
}
@Consumes({MediaType.APPLICATION_FORM_URLENCODED, MediaType.APPLICATION_JSON}) // (2)
@Post("/multiple")
public HttpResponse multipleConsumes() {
return HttpResponse.ok();
}
@Post(value = "/member", consumes = MediaType.TEXT_PLAIN) // (3)
public HttpResponse consumesMember() {
return HttpResponse.ok();
}
}
|
import io.micronaut.context.annotation.Requires
import io.micronaut.http.HttpResponse
import io.micronaut.http.MediaType
import io.micronaut.http.annotation.Consumes
import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Post
@Controller("/consumes")
class ConsumesController {
@Post // (1)
HttpResponse index() {
HttpResponse.ok()
}
@Consumes([MediaType.APPLICATION_FORM_URLENCODED, MediaType.APPLICATION_JSON]) // (2)
@Post("/multiple")
HttpResponse multipleConsumes() {
HttpResponse.ok()
}
@Post(value = "/member", consumes = MediaType.TEXT_PLAIN) // (3)
HttpResponse consumesMember() {
HttpResponse.ok()
}
}
|
import io.micronaut.context.annotation.Requires
import io.micronaut.http.HttpResponse
import io.micronaut.http.MediaType
import io.micronaut.http.annotation.Consumes
import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Post
@Controller("/consumes")
class ConsumesController {
@Post // (1)
fun index(): HttpResponse<*> {
return HttpResponse.ok<Any>()
}
@Consumes(MediaType.APPLICATION_FORM_URLENCODED, MediaType.APPLICATION_JSON) // (2)
@Post("/multiple")
fun multipleConsumes(): HttpResponse<*> {
return HttpResponse.ok<Any>()
}
@Post(value = "/member", consumes = [MediaType.TEXT_PLAIN]) // (3)
fun consumesMember(): HttpResponse<*> {
return HttpResponse.ok<Any>()
}
}
|
默认情况下,控制器操作使用 Content-Type 类型为 application/json 的请求。
@Consumes 注释为传入请求采用支持媒体类型的 String[]。
内容类型也可以使用方法注释的 consumes 成员指定。
自定义处理的内容类型
通常 JSON 解析仅在内容类型为 application/json 时发生。其他 MediaTypeCodec 类的行为类似,因为它们具有可以处理的预定义内容类型。要扩展给定编解码器处理的媒体类型列表,请提供将存储在 CodecConfiguration 中的配置:
Properties |
Yaml |
Toml |
Groovy |
Hocon |
JSON |
micronaut.codec.json.additionalTypes[0]=text/javascript
micronaut.codec.json.additionalTypes[1]=...
|
micronaut:
codec:
json:
additionalTypes:
- text/javascript
- ...
|
[micronaut]
[micronaut.codec]
[micronaut.codec.json]
additionalTypes=[
"text/javascript",
"..."
]
|
micronaut {
codec {
json {
additionalTypes = ["text/javascript", "..."]
}
}
}
|
{
micronaut {
codec {
json {
additionalTypes = ["text/javascript", "..."]
}
}
}
}
|
{
"micronaut": {
"codec": {
"json": {
"additionalTypes": ["text/javascript", "..."]
}
}
}
}
|
目前支持的配置前缀有json、json-stream、text、text-stream。
更多建议: