{"id":41712,"date":"2024-11-08T05:01:07","date_gmt":"2024-11-08T05:01:07","guid":{"rendered":"https:\/\/atmokpo.com\/w\/?p=41712"},"modified":"2024-11-26T06:35:54","modified_gmt":"2024-11-26T06:35:54","slug":"17-c%ea%b3%bc-rest-api%eb%a5%bc-%ec%9d%b4%ec%9a%a9%ed%95%9c-%ec%99%b8%eb%b6%80-%ec%8b%9c%ec%8a%a4%ed%85%9c%ea%b3%bc%ec%9d%98-%ec%97%b0%eb%8f%99-c%ec%9c%bc%eb%a1%9c-restful-%ec%84%9c%eb%b9%84","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/41712\/","title":{"rendered":"17.C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9, C#\uc73c\ub85c RESTful \uc11c\ube44\uc2a4 \uac1c\ubc1c \ubc0f \uc678\ubd80 \uc2dc\uc2a4\ud15c \uc5f0\ub3d9 \uc608\uc81c"},"content":{"rendered":"<h2>17. C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9<\/h2>\n<p>\uc624\ub298\ub0a0 \uc81c\uc870\uc5c5\uc5d0\uc11c\ub294 \ub2e4\uc591\ud55c \uc2dc\uc2a4\ud15c\uc774 \uc11c\ub85c \uc5f0\uacb0\ub418\uc5b4 \ud1b5\ud569\ub41c \uc815\ubcf4 \ud658\uacbd\uc744 \uc870\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. \ud2b9\ud788 MES(Manufacturing Execution System)\uc640 \uac19\uc740 \uacf5\uc7a5 \uc790\ub3d9\ud654 \uc2dc\uc2a4\ud15c\uc740 \ub2e4\ub978 \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc6d0\ud65c\ud55c \ub370\uc774\ud130 \uc5f0\ub3d9\uc774 \ud544\uc218\uc801\uc785\ub2c8\ub2e4. \uc774 \uae00\uc5d0\uc11c\ub294 C#\uacfc REST API\ub97c \uc774\uc6a9\ud558\uc5ec \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9\uc744 \uad6c\ud604\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc124\uba85\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>REST API\ub780 \ubb34\uc5c7\uc778\uac00?<\/h3>\n<p>REST(Representational State Transfer)\ub294 \uc6f9 \uc11c\ube44\uc2a4 \uc544\ud0a4\ud14d\ucc98 \uc2a4\ud0c0\uc77c\ub85c, \ud074\ub77c\uc774\uc5b8\ud2b8\uc640 \uc11c\ubc84 \uac04\uc758 \uc0c1\ud638\uc791\uc6a9\uc744 \uc815\uc758\ud558\ub294 \uc77c\ub828\uc758 \uaddc\uce59\uacfc \uc6d0\uce59\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. REST API\ub294 \uc774\ub7ec\ud55c \uc6d0\uce59\uc744 \ub530\ub974\ub294 API\ub85c, HTTP \ud504\ub85c\ud1a0\ucf5c\uc744 \uae30\ubc18\uc73c\ub85c \ud569\ub2c8\ub2e4. \uc790\uc6d0(\ub370\uc774\ud130)\uacfc \uadf8 \uc0c1\ud0dc\ub97c URL\uc744 \ud1b5\ud574 \ucc38\uc870\ud558\uba70, HTTP \uba54\uc11c\ub4dc(GET, POST, PUT, DELETE \ub4f1)\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc790\uc6d0\uc5d0 \ub300\ud55c \uc791\uc5c5\uc744 \uc218\ud589\ud569\ub2c8\ub2e4.<\/p>\n<h3>C#\uc5d0\uc11c RESTful \uc11c\ube44\uc2a4 \uac1c\ubc1c\ud558\uae30<\/h3>\n<p>C# \ud658\uacbd\uc5d0\uc11c RESTful \uc11c\ube44\uc2a4\ub97c \uac1c\ubc1c\ud558\ub294 \uac00\uc7a5 \uc77c\ubc18\uc801\uc778 \ubc29\ubc95\uc740 ASP.NET Core\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc785\ub2c8\ub2e4. ASP.NET Core\ub294 Microsoft\uac00 \uc81c\uacf5\ud558\ub294 \uc624\ud508\uc18c\uc2a4 \ud504\ub808\uc784\uc6cc\ud06c\ub85c, \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubc0f RESTful API\ub97c \uc190\uc27d\uac8c \uac1c\ubc1c\ud560 \uc218 \uc788\ub294 \ub9ce\uc740 \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<h4>1. ASP.NET Core Web API \ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131<\/h4>\n<pre><code>dotnet new webapi -n MyRestApi<\/code><\/pre>\n<p>\uc704 \uba85\ub839\uc5b4\ub97c \uc2e4\ud589\ud558\uc5ec \uc0c8\ub85c\uc6b4 ASP.NET Core Web API \ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4. &#8216;MyRestApi&#8217;\ub294 \ud504\ub85c\uc81d\ud2b8 \uc774\ub984\uc785\ub2c8\ub2e4.<\/p>\n<h4>2. \ubaa8\ub378 \ud074\ub798\uc2a4 \uc815\uc758<\/h4>\n<p>\uc6b0\ub9ac\uc758 \uc608\uc81c\uc5d0\uc11c \uc0ac\uc6a9\ud560 \ubaa8\ub378 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \uc81c\ud488 \uc815\ubcf4\ub97c \uc800\uc7a5\ud558\ub294 Product \ud074\ub798\uc2a4\ub97c \ub9cc\ub4e4\uc5b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code>public class Product\n{\n    public int Id { get; set; }\n    public string Name { get; set; }\n    public decimal Price { get; set; }\n}<\/code><\/pre>\n<h4>3. \ub370\uc774\ud130 \ucee8\ud14d\uc2a4\ud2b8 \uc124\uc815<\/h4>\n<p>Entity Framework Core\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc640 \uc5f0\uacb0\ud558\uaca0\uc2b5\ub2c8\ub2e4. NuGet \ud328\ud0a4\uc9c0 \uad00\ub9ac\uc790\ub97c \uc0ac\uc6a9\ud558\uc5ec Microsoft.EntityFrameworkCore.SqlServer \ubc0f Microsoft.EntityFrameworkCore.Tools \ud328\ud0a4\uc9c0\ub97c \uc124\uce58\ud569\ub2c8\ub2e4.<\/p>\n<pre><code>dotnet add package Microsoft.EntityFrameworkCore.SqlServer\ndotnet add package Microsoft.EntityFrameworkCore.Tools<\/code><\/pre>\n<p>\uadf8 \ub2e4\uc74c, ApplicationDbContext \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud558\uc5ec \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ucee8\ud14d\uc2a4\ud2b8\ub97c \uc124\uc815\ud569\ub2c8\ub2e4.<\/p>\n<pre><code>using Microsoft.EntityFrameworkCore;\n\npublic class ApplicationDbContext : DbContext\n{\n    public DbSet<product> Products { get; set; }\n\n    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n    {\n        optionsBuilder.UseSqlServer(\"your_connection_string_here\");\n    }\n}<\/product><\/code><\/pre>\n<h4>4. \uc81c\ud488 \ucee8\ud2b8\ub864\ub7ec \uc0dd\uc131<\/h4>\n<p>\uc81c\ud488 \uc815\ubcf4\ub97c \ucc98\ub9ac\ud558\ub294 API \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub97c \uc0dd\uc131\ud558\uae30 \uc704\ud574, ProductsController \ud074\ub798\uc2a4\ub97c \uc124\uc815\ud569\ub2c8\ub2e4.<\/p>\n<pre><code>using Microsoft.AspNetCore.Mvc;\n\n[Route(\"api\/[controller]\")]\n[ApiController]\npublic class ProductsController : ControllerBase\n{\n    private readonly ApplicationDbContext _context;\n\n    public ProductsController(ApplicationDbContext context)\n    {\n        _context = context;\n    }\n\n    [HttpGet]\n    public IActionResult GetAllProducts()\n    {\n        return Ok(_context.Products.ToList());\n    }\n\n    [HttpGet(\"{id}\")]\n    public IActionResult GetProductById(int id)\n    {\n        var product = _context.Products.Find(id);\n        if (product == null) return NotFound();\n        return Ok(product);\n    }\n\n    [HttpPost]\n    public IActionResult CreateProduct([FromBody] Product product)\n    {\n        _context.Products.Add(product);\n        _context.SaveChanges();\n        return CreatedAtAction(nameof(GetProductById), new { id = product.Id }, product);\n    }\n\n    [HttpPut(\"{id}\")]\n    public IActionResult UpdateProduct(int id, [FromBody] Product product)\n    {\n        if (id != product.Id) return BadRequest();\n        _context.Products.Update(product);\n        _context.SaveChanges();\n        return NoContent();\n    }\n\n    [HttpDelete(\"{id}\")]\n    public IActionResult DeleteProduct(int id)\n    {\n        var product = _context.Products.Find(id);\n        if (product == null) return NotFound();\n        _context.Products.Remove(product);\n        _context.SaveChanges();\n        return NoContent();\n    }\n}<\/code><\/pre>\n<h3>\uc678\ubd80 \uc2dc\uc2a4\ud15c \uc5f0\ub3d9 \uc608\uc81c<\/h3>\n<p>\uc774\uc81c \uc6b0\ub9ac\uac00 \ub9cc\ub4e0 RESTful \uc11c\ube44\uc2a4\uc640 \uc678\ubd80 \uc2dc\uc2a4\ud15c(\uc608: ERP \uc2dc\uc2a4\ud15c) \uac04\uc758 \uc5f0\ub3d9\uc744 \ub2e4\ub904\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \ub9ce\uc740 ERP \uc2dc\uc2a4\ud15c\uc740 REST API\ub97c \ud1b5\ud574 \ub370\uc774\ud130\ub97c \uc8fc\uace0\ubc1b\uc744 \uc218 \uc788\ub294 \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<h4>1. \uc678\ubd80 \uc2dc\uc2a4\ud15c API \ud638\ucd9c \uad6c\ud604<\/h4>\n<p>HttpClient\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc678\ubd80 API\ub97c \ud638\ucd9c\ud558\ub294 \uba54\uc11c\ub4dc\ub97c \ucd94\uac00\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code>using System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Threading.Tasks;\n\npublic class ExternalSystemService\n{\n    private readonly HttpClient _httpClient;\n\n    public ExternalSystemService(HttpClient httpClient)\n    {\n        _httpClient = httpClient;\n        _httpClient.BaseAddress = new Uri(\"https:\/\/external.api.com\/\");\n        _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(\"application\/json\"));\n    }\n\n    public async Task<list<product>&gt; GetProductsFromExternalSystemAsync()\n    {\n        var response = await _httpClient.GetAsync(\"api\/products\");\n        if (response.IsSuccessStatusCode)\n        {\n            var jsonResponse = await response.Content.ReadAsStringAsync();\n            return JsonSerializer.Deserialize<list<product>&gt;(jsonResponse);\n        }\n        return null;\n    }\n}<\/list<product><\/list<product><\/code><\/pre>\n<h4>2. RestController\uc5d0\uc11c \uc678\ubd80 \uc2dc\uc2a4\ud15c \ub370\uc774\ud130 \ub3d9\uae30\ud654<\/h4>\n<p>\uc774\uc81c ProductsController\uc5d0 \uc678\ubd80 \uc2dc\uc2a4\ud15c\uc758 \uc81c\ud488 \ub370\uc774\ud130\ub97c \ub3d9\uae30\ud654\ud558\ub294 \uba54\uc11c\ub4dc\ub97c \ucd94\uac00\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code>[HttpPost(\"sync\")]\npublic async Task<iactionresult> SyncExternalProducts()\n{\n    var externalProducts = await _externalSystemService.GetProductsFromExternalSystemAsync();\n    if (externalProducts != null)\n    {\n        foreach (var product in externalProducts)\n        {\n            _context.Products.Add(product);\n        }\n        _context.SaveChanges();\n        return Ok();\n    }\n    return NotFound();\n}<\/iactionresult><\/code><\/pre>\n<h3>\uacb0\ub860<\/h3>\n<p>C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c \uc5f0\ub3d9\uc740 \ub2e4\uc591\ud55c \uc81c\uc870 \ud658\uacbd\uc5d0\uc11c \ub370\uc774\ud130\ub97c \ud6a8\uc728\uc801\uc73c\ub85c \uad00\ub9ac\ud558\uace0 \ud65c\uc6a9\ud558\ub294 \ub370 \ud070 \ub3c4\uc6c0\uc774 \ub429\ub2c8\ub2e4. \uc774 \uae00\uc5d0\uc11c\ub294 C#\uc73c\ub85c RESTful \uc11c\ube44\uc2a4\ub97c \uac1c\ubc1c\ud558\uace0 \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9\uc744 \uc704\ud55c \uae30\ucd08\uc801\uc778 \ub0b4\uc6a9\uc744 \uc0b4\ud3b4\ubcf4\uc558\uc2b5\ub2c8\ub2e4. \uc774\ub97c \ubc14\ud0d5\uc73c\ub85c \uc5ec\ub7ec\ubd84\uc740 \uc81c\uc870\uc5c5\uccb4\uc758 \uc694\uad6c\uc0ac\ud56d\uc5d0 \ub9de\uac8c \uc2dc\uc2a4\ud15c\uc744 \ud655\uc7a5\ud558\uace0 \ucd5c\uc801\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c \ub2e8\uacc4\ub85c\ub294 \ubcf4\uc548 \ubc0f \uc778\uc99d, \ub370\uc774\ud130 \uac80\uc99d\uacfc \uac19\uc740 \ucd94\uac00\uc801\uc778 \uae30\ub2a5\uc744 \uace0\ub824\ud574 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc640 \uac19\uc740 \uc2dc\uc2a4\ud15c \uc5f0\ub3d9\uc744 \ud1b5\ud574 MES\uc640 \uc678\ubd80 \uc2dc\uc2a4\ud15c \uac04\uc758 \ub370\uc774\ud130 \ud750\ub984\uc744 \uc6d0\ud65c\ud558\uac8c \ub9cc\ub4e4\uc5b4\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubc1c\ud45c\ud560 \uc0c8\ub85c\uc6b4 \ud504\ub85c\uc81d\ud2b8\ub97c \uacc4\ud68d\ud558\uace0 \uc788\ub2e4\uba74, \uc774 \uc608\uc81c\ub97c \ucc38\uace0\ud558\uc5ec C# \uae30\ubc18\uc758 RESTful \uc11c\ube44\uc2a4\ub97c \uad6c\ucd95\ud558\uace0 \uc678\ubd80 API\uc640\uc758 \ud1b5\ud569\uc744 \ud6a8\uc728\uc801\uc73c\ub85c \uc218\ud589\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>17. C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9 \uc624\ub298\ub0a0 \uc81c\uc870\uc5c5\uc5d0\uc11c\ub294 \ub2e4\uc591\ud55c \uc2dc\uc2a4\ud15c\uc774 \uc11c\ub85c \uc5f0\uacb0\ub418\uc5b4 \ud1b5\ud569\ub41c \uc815\ubcf4 \ud658\uacbd\uc744 \uc870\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. \ud2b9\ud788 MES(Manufacturing Execution System)\uc640 \uac19\uc740 \uacf5\uc7a5 \uc790\ub3d9\ud654 \uc2dc\uc2a4\ud15c\uc740 \ub2e4\ub978 \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc6d0\ud65c\ud55c \ub370\uc774\ud130 \uc5f0\ub3d9\uc774 \ud544\uc218\uc801\uc785\ub2c8\ub2e4. \uc774 \uae00\uc5d0\uc11c\ub294 C#\uacfc REST API\ub97c \uc774\uc6a9\ud558\uc5ec \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9\uc744 \uad6c\ud604\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc124\uba85\ud558\uaca0\uc2b5\ub2c8\ub2e4. REST API\ub780 \ubb34\uc5c7\uc778\uac00? REST(Representational State Transfer)\ub294 \uc6f9 &hellip; <a href=\"https:\/\/atmokpo.com\/w\/41712\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;17.C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9, C#\uc73c\ub85c RESTful \uc11c\ube44\uc2a4 \uac1c\ubc1c \ubc0f \uc678\ubd80 \uc2dc\uc2a4\ud15c \uc5f0\ub3d9 \uc608\uc81c&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[235],"tags":[],"class_list":["post-41712","post","type-post","status-publish","format-standard","hentry","category-mes"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>17.C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9, C#\uc73c\ub85c RESTful \uc11c\ube44\uc2a4 \uac1c\ubc1c \ubc0f \uc678\ubd80 \uc2dc\uc2a4\ud15c \uc5f0\ub3d9 \uc608\uc81c - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/atmokpo.com\/w\/41712\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"17.C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9, C#\uc73c\ub85c RESTful \uc11c\ube44\uc2a4 \uac1c\ubc1c \ubc0f \uc678\ubd80 \uc2dc\uc2a4\ud15c \uc5f0\ub3d9 \uc608\uc81c - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"17. C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9 \uc624\ub298\ub0a0 \uc81c\uc870\uc5c5\uc5d0\uc11c\ub294 \ub2e4\uc591\ud55c \uc2dc\uc2a4\ud15c\uc774 \uc11c\ub85c \uc5f0\uacb0\ub418\uc5b4 \ud1b5\ud569\ub41c \uc815\ubcf4 \ud658\uacbd\uc744 \uc870\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. \ud2b9\ud788 MES(Manufacturing Execution System)\uc640 \uac19\uc740 \uacf5\uc7a5 \uc790\ub3d9\ud654 \uc2dc\uc2a4\ud15c\uc740 \ub2e4\ub978 \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc6d0\ud65c\ud55c \ub370\uc774\ud130 \uc5f0\ub3d9\uc774 \ud544\uc218\uc801\uc785\ub2c8\ub2e4. \uc774 \uae00\uc5d0\uc11c\ub294 C#\uacfc REST API\ub97c \uc774\uc6a9\ud558\uc5ec \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9\uc744 \uad6c\ud604\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc124\uba85\ud558\uaca0\uc2b5\ub2c8\ub2e4. REST API\ub780 \ubb34\uc5c7\uc778\uac00? REST(Representational State Transfer)\ub294 \uc6f9 &hellip; \ub354 \ubcf4\uae30 &quot;17.C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9, C#\uc73c\ub85c RESTful \uc11c\ube44\uc2a4 \uac1c\ubc1c \ubc0f \uc678\ubd80 \uc2dc\uc2a4\ud15c \uc5f0\ub3d9 \uc608\uc81c&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/41712\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-08T05:01:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-26T06:35:54+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:site\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"root\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"2\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/41712\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/41712\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"17.C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9, C#\uc73c\ub85c RESTful \uc11c\ube44\uc2a4 \uac1c\ubc1c \ubc0f \uc678\ubd80 \uc2dc\uc2a4\ud15c \uc5f0\ub3d9 \uc608\uc81c\",\"datePublished\":\"2024-11-08T05:01:07+00:00\",\"dateModified\":\"2024-11-26T06:35:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/41712\/\"},\"wordCount\":88,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"MES\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/41712\/\",\"url\":\"https:\/\/atmokpo.com\/w\/41712\/\",\"name\":\"17.C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9, C#\uc73c\ub85c RESTful \uc11c\ube44\uc2a4 \uac1c\ubc1c \ubc0f \uc678\ubd80 \uc2dc\uc2a4\ud15c \uc5f0\ub3d9 \uc608\uc81c - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-08T05:01:07+00:00\",\"dateModified\":\"2024-11-26T06:35:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/41712\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/41712\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/41712\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"17.C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9, C#\uc73c\ub85c RESTful \uc11c\ube44\uc2a4 \uac1c\ubc1c \ubc0f \uc678\ubd80 \uc2dc\uc2a4\ud15c \uc5f0\ub3d9 \uc608\uc81c\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/atmokpo.com\/w\/#website\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/atmokpo.com\/w\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"contentUrl\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"width\":400,\"height\":400,\"caption\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\"},\"image\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/bebubo4\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/atmokpo.com\/w\"],\"url\":\"https:\/\/atmokpo.com\/w\/author\/root\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"17.C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9, C#\uc73c\ub85c RESTful \uc11c\ube44\uc2a4 \uac1c\ubc1c \ubc0f \uc678\ubd80 \uc2dc\uc2a4\ud15c \uc5f0\ub3d9 \uc608\uc81c - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/atmokpo.com\/w\/41712\/","og_locale":"ko_KR","og_type":"article","og_title":"17.C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9, C#\uc73c\ub85c RESTful \uc11c\ube44\uc2a4 \uac1c\ubc1c \ubc0f \uc678\ubd80 \uc2dc\uc2a4\ud15c \uc5f0\ub3d9 \uc608\uc81c - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"17. C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9 \uc624\ub298\ub0a0 \uc81c\uc870\uc5c5\uc5d0\uc11c\ub294 \ub2e4\uc591\ud55c \uc2dc\uc2a4\ud15c\uc774 \uc11c\ub85c \uc5f0\uacb0\ub418\uc5b4 \ud1b5\ud569\ub41c \uc815\ubcf4 \ud658\uacbd\uc744 \uc870\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. \ud2b9\ud788 MES(Manufacturing Execution System)\uc640 \uac19\uc740 \uacf5\uc7a5 \uc790\ub3d9\ud654 \uc2dc\uc2a4\ud15c\uc740 \ub2e4\ub978 \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc6d0\ud65c\ud55c \ub370\uc774\ud130 \uc5f0\ub3d9\uc774 \ud544\uc218\uc801\uc785\ub2c8\ub2e4. \uc774 \uae00\uc5d0\uc11c\ub294 C#\uacfc REST API\ub97c \uc774\uc6a9\ud558\uc5ec \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9\uc744 \uad6c\ud604\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc124\uba85\ud558\uaca0\uc2b5\ub2c8\ub2e4. REST API\ub780 \ubb34\uc5c7\uc778\uac00? REST(Representational State Transfer)\ub294 \uc6f9 &hellip; \ub354 \ubcf4\uae30 \"17.C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9, C#\uc73c\ub85c RESTful \uc11c\ube44\uc2a4 \uac1c\ubc1c \ubc0f \uc678\ubd80 \uc2dc\uc2a4\ud15c \uc5f0\ub3d9 \uc608\uc81c\"","og_url":"https:\/\/atmokpo.com\/w\/41712\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-08T05:01:07+00:00","article_modified_time":"2024-11-26T06:35:54+00:00","author":"root","twitter_card":"summary_large_image","twitter_creator":"@bebubo4","twitter_site":"@bebubo4","twitter_misc":{"\uae00\uc4f4\uc774":"root","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"2\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/41712\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/41712\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"17.C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9, C#\uc73c\ub85c RESTful \uc11c\ube44\uc2a4 \uac1c\ubc1c \ubc0f \uc678\ubd80 \uc2dc\uc2a4\ud15c \uc5f0\ub3d9 \uc608\uc81c","datePublished":"2024-11-08T05:01:07+00:00","dateModified":"2024-11-26T06:35:54+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/41712\/"},"wordCount":88,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["MES"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/41712\/","url":"https:\/\/atmokpo.com\/w\/41712\/","name":"17.C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9, C#\uc73c\ub85c RESTful \uc11c\ube44\uc2a4 \uac1c\ubc1c \ubc0f \uc678\ubd80 \uc2dc\uc2a4\ud15c \uc5f0\ub3d9 \uc608\uc81c - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-08T05:01:07+00:00","dateModified":"2024-11-26T06:35:54+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/41712\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/41712\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/41712\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"17.C#\uacfc REST API\ub97c \uc774\uc6a9\ud55c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc\uc758 \uc5f0\ub3d9, C#\uc73c\ub85c RESTful \uc11c\ube44\uc2a4 \uac1c\ubc1c \ubc0f \uc678\ubd80 \uc2dc\uc2a4\ud15c \uc5f0\ub3d9 \uc608\uc81c"}]},{"@type":"WebSite","@id":"https:\/\/atmokpo.com\/w\/#website","url":"https:\/\/atmokpo.com\/w\/","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","description":"","publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atmokpo.com\/w\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/atmokpo.com\/w\/#organization","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","url":"https:\/\/atmokpo.com\/w\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/","url":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","contentUrl":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","width":400,"height":400,"caption":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8"},"image":{"@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/bebubo4"]},{"@type":"Person","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7","name":"root","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/atmokpo.com\/w"],"url":"https:\/\/atmokpo.com\/w\/author\/root\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/41712","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/comments?post=41712"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/41712\/revisions"}],"predecessor-version":[{"id":41713,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/41712\/revisions\/41713"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=41712"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=41712"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=41712"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}