Что эквивалентно ExpressJS для C # / ASP.NET Core? - PullRequest
0 голосов
/ 18 ноября 2018

В ExpressJ вы можете быстро настроить веб-сервер и заставить его прослушивать запросы и регистрировать обработчики в строке.

    var express = require('express')
    var app = express()

    // respond with "hello world" when a GET request is made to the homepage
    app.get('/', function (req, res) {
        res.send('hello world')
    })

Возможно ли сделать это в ASP.NET Core, используя что-то подобное, используя промежуточное ПО?

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.Get("/api/v2/", () =>
        {
            return "Hello world";
        });


        //configure more services...
    }

Также было бы полезно иметь возможность запустить несколько веб-слушателей в одном процессе:

using (var server = new WebServer(url))
{
    server.Get("/path", () => { return "Hello world" });
    server.Get("/path2", () => { return "Hello world2" });
    server.RunAsync();
}

Было бы очень удобно.

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Я пытался создать проект, позволяющий использовать точный синтаксис node.js в .NET Core. Я понял, что их соответствующий синтаксис предназначен для соответствующей среды.Я бы порекомендовал вам взглянуть на настройку веб-API .NET Core, где вы можете проверить, как вы можете иметь конечные точки, используя преимущества компонентов инфраструктуры.

Однако, чтобы использовать точный пример кода, который вы показали во втором абзаце, вам нужно определить такой класс в своем проекте:

public static class AppExtensions
{

    public static IApplicationBuilder Get(this IApplicationBuilder app,
                                            string path, Func<string> run) 
        => app.Use(async (context, next) =>
            {
                if (context.Request.Path == path)
                    await context.Response.WriteAsync(run());
                else await next();
            });

}
0 голосов
/ 18 ноября 2018

Вы можете использовать что-то вроде этого. Не 1-строчный, как в Express, но все же может быть полезно сгруппировать разные методы для одного и того же маршрута в 1 блок.

app.Map("/test", (builder) =>
        {
            builder.MapWhen(context => context.Request.Method == "GET", (app2) =>
            {
                app2.Run(async ctx =>
                {
                    await ctx.Response.WriteAsync("I have been reached.");
                });
            });
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...