相关文章推荐
成熟的单杠  ·  如何使用dplyr ...·  1 年前    · 
坚韧的板栗  ·  Android ...·  2 年前    · 

GitHub - dajuric/simple-http: Simple, portable HTTP server for .NET based on HttpListener.

Simple, portable HTTP server for .NET based on HttpListener. - GitHub - dajuric/simple-http: Simple, portable HTTP server for .NET based on HttpListener.

github.com

Simple-HTTP 설치

Nuget에서 검색후 설치

2. Route 설정 및 관리

프로젝트에 Service폴더 추가 및 HttpRoute.cs 추가

using SimpleHttp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
namespace SampleCode.Service
    public class HttpRoute
        private Thread httpRequst_thread;
        public HttpRoute()
            SetRoutes();
            httpRequst_thread = new Thread(Http_Proc);
            httpRequst_thread.IsBackground = true;
            httpRequst_thread.Start();
        private void SetRoutes()
            Route.Add("/GetTest", (req, res, props) =>
                res.AsText("GetTest");
            Route.Add("/GetTest/TEST1", (req, res, props) => GetTest_TEST1(req, res, props));
            Route.Add("/PostTest", (req, res, props) => PostTest(req, res, props), "POST");
            Route.Add("/PostTest", (req, res, props) => OPTIONS_HeadersProc(res), "OPTIONS");
        private void GetTest_TEST1(HttpListenerRequest req, HttpListenerResponse res, Dictionary<string, string> props)
                res.Headers.Add("Access-Control-Allow-Origin", "*");
                res.AsText("GetTest_TEST1");
            catch (Exception e)
                res.Headers.Add("Access-Control-Allow-Origin", "*");
                res.AsText("ERROR");
        private void PostTest(HttpListenerRequest req, HttpListenerResponse res, Dictionary<string, string> props)
                //Console.WriteLine("broadcast_signal - " + req.HasEntityBody);
                if (req.HasEntityBody)
                    using (System.IO.Stream body = req.InputStream) // here we have data
                        using (System.IO.StreamReader reader = new System.IO.StreamReader(body, req.ContentEncoding))
                            string order = reader.ReadToEnd();
                            Console.WriteLine(order);
                            POST_HeadersProc(res, order);
            catch (Exception e)
                POST_HeadersProc(res, "Exception");
        private void POST_HeadersProc(HttpListenerResponse res, string data)
            res.Headers.Add("Access-Control-Allow-Origin", "*");
            res.Headers.Add("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS");
            res.Headers.Add("Access-Control-Allow-Headers", "Content-Type, Authorization, Content-Length, X-Requested-With");
            res.AsText(data);
        private void OPTIONS_HeadersProc(HttpListenerResponse res)
            POST_HeadersProc(res, "");
        private void Http_Proc()
                //HttpServer.ListenAsync(8080, CancellationToken.None, Route.OnHttpRequestAsync).Wait();
                HttpServer.ListenAsync(1337, CancellationToken.None, Route.OnHttpRequestAsync).Wait();
            catch (Exception ex)
                Console.WriteLine("Http_Proc - Exception!!!!");
                Console.WriteLine(ex.Message);
HttpRoute 시작

메인 From에 버튼을 추가하고 HttpRoute 시작

using SampleCode.Service;
private void btnRestApiStart_Click(object sender, EventArgs e)
    HttpRoute httpRoute = new HttpRoute();
결과 확인

/GetTest 확인

/GetTest/TEST1 확인