以下のようにコントローラーでAPIを作成したときにcurlから引数のmessage
へ値を設定することができずハマったのでまとめます。
namespace WebApplication1.Controllers { [Route("api/[controller]")] public class SampleController : Controller { [HttpPost("create")] public async Task<string> CreateMessage([FromBody]string message) { ... } }
最初はJSONで{"message": "hogehoge"}
のような記述をしていたが、これだとmessage
に値が設定されなかった。
$ curl -d '{"message": "hogehoge"}' -H "Content-type: application/json" -XPOST localhost:5000/api/sample/create
結局以下の通りmessage
に設定する値を指定すれば良いことがわかったのでめでたしめでたし。
$ curl -d '"value1"' -H "Content-type: application/json" -XPOST localhost:5000/api/sample/create
なお、{"code":"xxxxx", "value":"dummy"}
のような複数のフィールドに対応させる場合には対象のPOCOを作成してバインドする必要があります。むしろこの方が直感的で分かりやすかったりしますね。