Как вызвать контроллер в клиентском приложении - PullRequest
1 голос
/ 03 июля 2019

У меня есть Консольное приложение ( NET Core 2.2 ), и основная функция этого приложения находится в кли.Но я хочу вызвать конечную точку api rest для этого (чтобы получить некоторую информацию об этом приложении).Теперь я внедряю код в Program.cs, добавляю Startup.cs и контроллер.Но Я не могу дозвониться до своего контроллера.Чего не хватает?

Program.cs:

public static void Main(string[] args)
{
    CreateWebHostBuilder(args).Build().Run();
    // further logick...
}

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseUrls("http://0.0.0.0:5002");

Startup.cs:

public class Startup
{
    public IConfiguration Configuration { get; }

    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddBusinessComponents();
        services.AddMvc();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseMvc();
    }
}

Контроллер:

[Produces("application/json")]
[Route("cli/v1/dataPicker/info")]
public class InfoController : Controller
{
    private IInfoBusinessComponent BusinessComponent { get; }

    [Microsoft.AspNetCore.Mvc.HttpGet]
    public async Task<IActionResult> GetInfoAsync()
    {
        Statuses statuses = null;
        try
        {
            statuses = await BusinessComponent.GetInfo();
        }
        catch (System.Exception ex)
        {
            return BadRequest($"Exception occurred while trying to get health informations.");
        }

        return Ok(statuses);
    }
}

Вот мой ответ почтальона: screen shot of postman

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Мне нужно было добавить строки (launchBrowser и applicationUrl) в файле launchSettings.json:

{
  "profiles": {
    "DataPicker.Cli": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "Key": "Value",
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
      "applicationUrl": "http://localhost:5003/"
    }
  }
}

Теперь я могу получить доступ к своему API через браузер и даже Swagger. : -)

0 голосов
/ 03 июля 2019

Попробуйте:

[Route("api/[controller]")]
[ApiController]
public class InfoController : Controller
{ 
    [HttpGet("GetInfo")]
    public async Task<IActionResult> GetInfoAsync()
    {
        Statuses statuses = null;
        try
        {
            statuses = await BusinessComponent.GetInfo();
        }
        catch (System.Exception ex)
        {
            return BadRequest($"Exception occurred while trying to get health informations.");
        }

        return Ok(statuses);
    }
}

И назовите это в браузере как:

http://localhost:5002/api/Info/GetInfo
...