Control HttpPost
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// POST api/<ValuesController> [HttpPost] public void Post([FromBody] string value) { } // PUT api/<ValuesController>/5 [HttpPut("{id}")] public void Put(int id, [FromBody] string value) { } |
FromBody 속성은 ASP.NET Core 웹 API에서 POST 요청의 본문(body)에서 데이터를 읽어오는 방식을 지정하는데 사용됩니다.
위의 코드에서 [FromBody] string value는 value 매개변수가 HTTP 요청의 본문에서 데이터를 읽어오도록 지정하는 것입니다.
즉, 클라이언트가 POST 요청을 보낼 때 요청 본문에 문자열 데이터를 담아서 보내면 해당 문자열 데이터가 value 매개변수에 바인딩됩니다.
예를 들어, 클라이언트가 다음과 같은 JSON 데이터를 POST 요청 본문에 담아서 보낸다고 가정해봅시다.
1 2 3 4 5 |
{ "value": "Hello, world!" } |
위와 같은 요청을 받았을 때, ASP.NET Core 웹 API는 value 매개변수에 “Hello, world!” 문자열을 바인딩합니다. 이렇게 함으로써 웹 API에서 이후에 해당 데이터를 처리할 수 있습니다.
FromBody 속성을 사용하여 본문에서 데이터를 읽어오는 것은 일반적으로 JSON 또는 XML 형식의 데이터를 전송하는 경우에 사용됩니다.
Sample
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using var client = new HttpClient(); var jsonContent = "{\"name\": \"John\", \"age\": 30}"; var response = await client.PostAsync("https://example.com/api/data", new StringContent(jsonContent)); if (response.IsSuccessStatusCode) { Console.WriteLine("Data sent successfully."); } else { Console.WriteLine($"Failed to send data. Status code: {response.StatusCode}"); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
using Microsoft.AspNetCore.Mvc; [ApiController] [Route("api/[controller]")] public class DataController : ControllerBase { [HttpPost] public IActionResult Post([FromBody] Person person) { if (person == null) { return BadRequest("Invalid data."); } // 여기에서 person 객체를 처리하거나 다른 작업을 수행합니다. // 예를 들어, 데이터베이스에 저장하거나 다른 서비스로 전달할 수 있습니다. return Ok("Data received successfully."); } } public class Person { public string Name { get; set; } public int Age { get; set; } } |