2017-12-02 16 views
0

私はちょうどKotlinとSpringBootを使い始めましたが、form-urlencoded POST要求を受け取る単純なエンドポイントを書くことに決めました。私は身体の実際のデータクラスを書くような気がしなかったので、身体のマップを使用しようとしましたが、私はキーと値のペアにアクセスできればいいと思っていました。Kotlin Spring Bootフォーム-URLコードによるPOST要求のマップ

@RestController 
class MyController { 

    @RequestMapping(value = "/endpoint", method = arrayOf(RequestMethod.POST), 
      consumes = arrayOf("application/x-www-form-urlencoded")) 
    fun myEndpoint(@RequestBody body: Map<String,String>): String { 

     // Do stuff 
    } 
} 

をしかし、それは私が@RequestBodyとform-urlencodedでポストの使用によるものであった読みサポートされていないメディアタイプ...およそ415エラーになった:私が最初に試してみました。私は、その後、代わり@ModelAttributeを使用してみましたが、その後[java.util.Map】インスタンス化に失敗しました

を受けた:指定されたクラスは、私は完全にハッキングたように、ほとんど驚くべきインターフェース

あります。私は体に注釈をつけずに試してみましたが、フォームパラメータのどれも注入されませんでした。私はこれを解決するためのデータクラスを追加することができます知っているが、私は前にJavaで同様のことをやったようにこれは一般的にマップを使用して行うことができます知っていると思います。

ありがとうございました。あなたは@RequestParam

@RequestMapping(value = "/endpoint", method = [(RequestMethod.POST)], 
        consumes = [MediaType.APPLICATION_FORM_URLENCODED_VALUE]) 
    fun myEndpoint(@RequestParam body: Map<String,String>): String { 

     return //... 
    } 

であなたのbodyのparamに注釈を付ける必要がある

答えて

1

(また、私はKotlin 1.2のように注釈のために利用可能な配列リテラルの賛成でarrayOf呼び出しを、除去したことに注意してください)

関連する問題