0

这是我的弹簧启动控制器:

@RestController
@RequestMapping("/api/v1/geo-media/")
class GeoMediaController {
@PostMapping("create")
    fun saveMedias(@RequestHeader("token") token: String,
                   @RequestParam mediaGroup: WalkMediaGroup):Result<String> {
    }
}

这是参数类:

class WalkMediaGroup (
    val wid: Long,
    val mediaGroup: MediaGroup
)

class MediaGroup(
    val node: Node,
    val medias: List<Media>
)

class Media (
    val type: Int,
    val content: String,
    val remark: String
)

然后是我的改造服务类:

interface ApiService {
    @Headers("Content-Type: application/json")
    @POST("geo-media/create")
    fun createGeoMedias(
        @Body mediaGroup: WalkMediaGroup
    ): Call<Result<String>>
}

以上是我的代码的关键部分。我不知道为什么我收到错误。

{
    "timestamp":"2019-10-25T11:46:10.247+0000",
    "status":400,
    "error":"Bad Request",
    "message":"Required WalkMediaGroup parameter 'mediaGroup' is not present",
 ......
}
4

1 回答 1

2

从 Android(或任何可能的客户端)您正在发布 JSON 正文。为了在服务器中接收 JSON 正文参数,您必须使用 Spring Boot@RequestBody()注释而不是@RequestParam()注释。

因此,在您的 Spring Boot API 代码中,只需将注释从 更改@RequestParam()@RequestBody(). 而已!

@PostMapping("create")
fun saveMedias(
    @RequestHeader("token") token: String,
   /* notice the change here ==> */ @RequestBody mediaGroup: WalkMediaGroup):Result<String> {
}
于 2019-10-26T04:13:00.070 回答