■103242 / inTopicNo.6) |
Re[2]: WebAPIで FromBody(string)がnull |
□投稿者/ 魔界の仮面弁士 (3793回)-(2024/07/09(Tue) 14:04:50)
|
■No103240 (魔界の仮面弁士) に追記 > var tb = Request.TotalBytes; > string rawJson = (tb == 0) ? null : Encoding.UTF8.GetString(Request.BinaryRead(tb)); 訂正。
public string Post(string id, [FromBody] string value) { // // .NET Framework 4.8 + C# 11 using var ms = new MemoryStream(); if (Request.InputStream.CanSeek) { Request.InputStream.Position = 0; } Request.InputStream.CopyTo(ms); string rawJson = Encoding.UTF8.GetString(ms.ToArray());
// 以下略 }
> MVC コントローラーは、Content-Type によって振る舞いを変える
curl -X POST -H "Content-Type:application/json;charset=UTF-8" --data-raw "{\"id\":\"jsonId\",\"value\":\"jsonValue\"}" --include "http://localhost:43138/Test/Post" ⇒ id=="jsonId", value=="jsonValue" ⇒ Request.InputStream → 「{"id":"jsonId","value":"jsonValue"}」
curl -X POST -H "Content-Type:application/x-www-form-urlencoded" --data-raw "{\"id\":\"jsonId\",\"value\":\"jsonValue\"}" --include "http://localhost:43138/Test/Post" ⇒ id==null, value==null ⇒ Request.InputStream → 「{"id":"jsonId","value":"jsonValue"}」
curl -X POST -H "Content-Type:text/plain;charset=UTF-8" --data-raw "{\"id\":\"jsonId\",\"value\":\"jsonValue\"}" --include "http://localhost:43138/Test/Post" ⇒ id==null, value==null ⇒ Request.InputStream → 「{"id":"jsonId","value":"jsonValue"}」
curl -X POST -H "Content-Type:application/xml" --data-raw "<x><id>xmlId</id><value>xmlValue</value></x>" --include "http://localhost:43138/Test/Post" ⇒ id==null, value==null ⇒ Request.InputStream → 「<x><id>xmlId</id><value>xmlValue</value></x>」
|
|