Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Nuget 설치 관리자로부터, 위 패키지를 설치를 합니다.


Step2- 웹서비스 시작 클래스 작성

Code Block
languagec#
themeEmacs
using Owin;

namespace MicroAKKAWebService
{    
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.UseNancy();
        }
    }
}
Code Block
languagec#
themeEmacs
using Microsoft.Owin.Hosting;

namespace MicroAKKAWebService
{
    class Program
    {
        static void Main(string[] args)
        {
            var url = "http://+:8080";

            using (WebApp.Start<Startup>(url))
            {
                Console.WriteLine("Running on {0}", url);
                Console.WriteLine("Press enter to exit");
                Console.ReadLine();
            }
        }
    }
}


Image Added

콘솔서비스를 실행한후, 웹브라우져에 localhost:8080 접근시 위와같은 화면을 볼수 있으면 성공입니다.

여기까지가, 웹서비스 기본 Empty 프로젝트를 만들었으며 이제 살을 붙여

라우터정의, Get/POST처리등이 가능하도록 기능추가를 해보겠습니다.

Info
 만약 실행이 안되면, +(모든도메인)에 대해 웹서비스를 바인딩할 권한이 없는것이기때문에 
커멘드 콘솔에서 다음과 같은명령어로 허용을 해줍니다.

netsh http add urlacl url=http://+:8080/ user=DOMAIN\username

혹은 VisualStudio를 Admin권한으로 실행하면 됩니다.


Step3- Root(Home) 라우터 설정

Code Block
languagec#
themeEmacs
using System;
using System.IO;
using System.Threading;
using System.Collections.Generic;
using System.Linq;

using Nancy;
using Nancy.Owin;

namespace MicroAKKAWebService
{
    public class HomeModule : NancyModule
    {
        public HomeModule()
        {
            Get["/"] = x => {
                var env = this.Context.GetOwinEnvironment();

                var requestBody = (Stream)env["owin.RequestBody"];
                var requestHeaders = (IDictionary<string, string[]>)env["owin.RequestHeaders"];
                var requestMethod = (string)env["owin.RequestMethod"];
                var requestPath = (string)env["owin.RequestPath"];
                var requestPathBase = (string)env["owin.RequestPathBase"];
                var requestProtocol = (string)env["owin.RequestProtocol"];
                var requestQueryString = (string)env["owin.RequestQueryString"];
                var requestScheme = (string)env["owin.RequestScheme"];

                var responseBody = (Stream)env["owin.ResponseBody"];
                var responseHeaders = (IDictionary<string, string[]>)env["owin.ResponseHeaders"];

                var owinVersion = (string)env["owin.Version"];
                var cancellationToken = (CancellationToken)env["owin.CallCancelled"];

                var uri = (string)env["owin.RequestScheme"] + "://" + requestHeaders["Host"].First() +
                  (string)env["owin.RequestPathBase"] + (string)env["owin.RequestPath"];

                if (env["owin.RequestQueryString"] != "")
                    uri += "?" + (string)env["owin.RequestQueryString"];

                return string.Format("Hello WebService {0} {1}", requestMethod, uri);
            };
        }
    }
}


마이크로 rest서비스를 위해서 이것만 있으면 충분합니다.

더 고급적인 웹서비스의 

Link: https://github.com/NancyFx/Nancy/wiki/Documentation