API不会使用@PostMapping接收信息,但是使用@RequestMapping是。 Spring Boot,Kotlin,REST API

时间:2018-11-07 03:09:10

标签: spring rest kotlin

我正在尝试通过邮递员保存一个新的“ proyecto”。

我正在使用:

  • Spring Boot 2.0.6.RELEASE。 Kotlin 1.2.71 Java 8。

我使用了@PostMapping批注,但它向我发送了null,但是如果我使用@RequestMapping,则它可以正常工作。 当我尝试一种或多种方式时,都会注释代码,以避免冲突。

ProyectoController.kt

@RestController
@RequestMapping("/proyectos")
class  ProyectoController {
    @Autowired
    lateinit var proyectoService : ProyectoService

    //Not working
    @PostMapping("/")
    fun createProyecto(proyecto: Proyecto): Proyecto {
        return proyectoService.createProyecto(proyecto)
    }

    //Working
    @RequestMapping("/", method = arrayOf(RequestMethod.POST))
    fun createProyeto2(@RequestBody proyecto: Proyecto): Proyecto{
        return proyectoService.createProyecto(proyecto)
    }
}

Proyecto.kt

@Document(collection = "proyectos")
@TypeAlias("proyecto")
data class Proyecto (
        @Id
        var id: String?,
        var nombre: String,
        var area: String,
        var fecha:String
)

带有@PostMapping的邮递员请求 enter image description here

带有@RequestMapping的邮递员请求 enter image description here

1 个答案:

答案 0 :(得分:3)

似乎缺少一个小的注释; @RequestBody在您有问题的端点中。尝试拥有;

@PostMapping("/")
fun createProyecto(@RequestBody proyecto: Proyecto): Proyecto {
    return proyectoService.createProyecto(proyecto)
}