Контекст:
Мы хотим создать одностраничное приложение, работающее с Blazor WebAssembly на стороне клиента. На стороне сервера решение имеет ASP.NET MVC, который включает некоторые классы ApiController для наших REST API.
Мы хотим использовать ASP.NET API на стороне сервера вместо Blazor Server, потому что мы хотим предоставить интерфейс REST с классами ApiController для неизвестных потребителей.
Вот мой клиентский (Blazor WebAssembly) и серверный (ASP.NET API) проект в одном решении:
Первая попытка запросить API через HttpClient-класс Blazor в нашем FetchData
-компоненте:
@inject HttpClient Http
...
@code {
private TodoItem[] TodoItems;
protected override async Task OnInitializedAsync()
{
TodoItems = await Http.GetJsonAsync<TodoItem[]>("api/ToDo");
}
}
На стороне сервера API-контроллер выглядит так:
namespace ToDoListAPI.Controllers
{
[Route("api/[controller]")]
[ApiController]
[Produces("application/json")]
public class ToDoController : ControllerBase
{
[HttpGet]
public string IGetAll()
{
var lResult = new List<ToDoList.TodoItem>();
// create dummies
for (var i = 0; i < 10; i++)
{
lResult.Add(new ToDoList.TodoItem() { Title = $"Title {i}", IsDone = false });
}
return JsonSerializer.Serialize(lResult);
}
}
}
Проблема: в моем проекте Blazor WebAssembly не удается выполнить запрос к API. Проект Blazor WebAssembly размещается на https://localhost:44340/, а API размещается на https://localhost:44349/. Как я могу разместить оба проекта вместе, как если бы это был JavaScript Framework?