React Native: вызов API, работающего на локальном хосте - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть API, который я запускаю локально на моей машине.Я пытаюсь получить доступ к этим данным в среде разработки и сталкиваюсь с проблемами.

Когда мое приложение React Native работает через expo, localhost ссылается на локальный хост устройств, а не на моерабочий стол.Я немного исследовал это, и главное предложение - запросить ваш внутренний IP-адрес вместо localhost.

Когда я запрашиваю localhost, я получаю исключение без подробностей:

Network request failed

Когда я запрашиваю свой внутренний IP-адрес, запрос зависает и ничего не происходит.

Я запускаю выставку с помощью этой команды: expo start --tunnel

Воткод, выполняющий запрос:

fetch("http://localhost:5001/api/standings")
    .then((res) => console.log(res))
    .catch((err) => console.log(err))

API .NET работает через хром.И на localhost, и на моем внутреннем IP-адресе (с предупреждением о незащищенном соединении).

Есть ли дополнительная конфигурация, которую я пропускаю?

РЕДАКТИРОВАТЬ:

Здесьответ почтальона:

Postman

Вот мой Startup.cs

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

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        services.AddHttpClient();
        services.AddCors();
        services.AddEnv((builder) =>
        {
            builder
            .AddEnvFile(".env")
            .AddThrowOnError(true)
            .AddEncoding(Encoding.ASCII);
        });
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHsts();
        }

        app.UseCors(builder =>
        {
            builder
            .AllowAnyOrigin()
            .AllowAnyMethod()
            .AllowAnyHeader()
            .AllowCredentials();
        });

        app.UseHttpsRedirection();
        app.UseMvc();
    }
}

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Вы пытались использовать ngrok для предоставления вашего API?

В команде, над которой я работаю, мы хотим протестировать нашу версию API, работающую на локальном хосте, а также запуститьМобильное приложение в наших симуляторах - показать локальную версию API с помощью ngrok и указать нашему приложению URL-адрес ngrok.

ngrok предоставляет локальные серверы за NAT и брандмауэры общедоступному Интернету через защищенные туннели.

Вот руководство , которое должно помочь при запуске ngrok на компьютере с Windows.

0 голосов
/ 03 февраля 2019

Похоже, проблема перекрестного происхождения.Вы не можете отправить запрос в другой домен.Нужно , чтобы включить Cross-Origin Request .

Как это сделать для asp.net core - https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-2.2

Как это сделать для asp.net webapi - https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api

Обе ссылки имеют отличные объяснения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...