atelier:mitsuba

i love UI/UX, Blend, XAML, Behavior, P5, oF, Web, Tangible Bits and Physical computing. なにかあればお気軽にご連絡ください。atelier@c-mitsuba.com

asp.net core でNancyを使う話

以前、asp.netなんもわからん状態でC#でWeb APIチックなものを作ってみたくて、Nancyを触ってみたことがあった。
当時のWebAppはもう処分しちゃったけど。
NancyでHello Worldからデプロイまでしてみる - atelier:mitsuba


で、asp.netは.net coreになって、asp.net coreになって、久々にNancyやろうと思ったら全然動かない。
ってかビルドも通らない。

色々調査した結果こう書けばいいってのが分かったので、備忘録がてらメモしとく。


まずは .NETStandard 2.0で使えるNancyをnugetでインストールする。
f:id:c-mitsuba:20200805020443p:plain


Cross-Origin Resource Sharingの設定とNancyを使うよーをStartup.csに書く。
今回はなんでもおっけーなので、この2箇所を追加。

 public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddRouting(option => option.LowercaseUrls = true);
//ここと
            services.AddCors();
        }

        public void Configure(IApplicationBuilder app)
        {
//ここ
            app.UseCors(builder =>
            {
                builder.AllowAnyOrigin();
            });
            app.UseOwin(pipeline => pipeline.UseNancy());
//まで
        }
    }


で、最後にAPIを作っていく。
適当なcsを作る。今回はApiModule.csにした。
ポイントは、NancyModuleを継承するところ。

   public sealed class ApiModule : NancyModule
    {
        public ApiModule()
        {
//ここの書き方が変わったみたい。
//ルートにアクセスすると文字列が返ってくるだけのAPI風なやつ
            Get("/", args => "Hello api.nameless.");
        }
    }


実行するとこんなかんじ。
https://api.name-less.space/
f:id:c-mitsuba:20200805023002p:plain