我正在尝试使用SQL Server和Entity Framework Core 2创建我的第一个.NET Core Web Api,但是当我在项目构建过程中从浏览器调用终结点时,却一无所获。它始终停留在显示“ Hello World”的启动页面上。
如何正确地从Rest Api获取数据?
首先,我的模型课:
public class Project
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}
使用DbContext
:
public class TaskManagerDbContext : DbContext
{
public TaskManagerDbContext(DbContextOptions<TaskManagerDbContext> options) : base(options) { }
public DbSet<Project> Projects { get; set; }
}
然后我将两条记录硬编码到数据库中
我通过基于实体框架的R / W搭建一个API来生成ProjectsController
。 get
函数如下所示(我认为没有必要显示所有控制器,因为它是由脚手架生成的):
[Route("api/[controller]")]
[ApiController]
public class ProjectsController : ControllerBase
{
private readonly TaskManagerDbContext _context;
public ProjectsController(TaskManagerDbContext context)
{
_context = context;
}
// GET: api/Projects
[HttpGet]
public IEnumerable<Project> GetProjects()
{
return _context.Projects;
}
// GET: api/Projects/5
[HttpGet("{id}")]
public async Task<IActionResult> GetProject([FromRoute] int id)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var project = await _context.Projects.FindAsync(id);
if (project == null)
{
return NotFound();
}
return Ok(project);
}
}
最后,我的Startup.cs
:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddDbContext<TaskManagerDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
app.UseHttpsRedirection();
app.UseMvc();
}
}
问题是,需要进行哪些更改才能通过API端点从数据库中获取数据?现在,当我尝试调用该端点时,它始终位于“ hello world”页面上。
我的连接字符串在项目目录的appsettings.json
文件中。
谢谢您的建议!
答案 0 :(得分:4)
模板中还剩下一个空ASP核心项目的剩余部分。
只需删除整个块,因为您不需要它:
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});