使用ASP.NET内核和Razor语法构建REST API

使用ASP.NET内核和Razor语法构建REST API,razor,asp.net-web-api,asp.net-core-mvc,Razor,Asp.net Web Api,Asp.net Core Mvc,当我浏览互联网上关于使用asp.NETCore构建RESTAPI的文章和内容时,我发现RazorWeb页面并不常用于前端。它们中的大多数都集中在Angular 1和&2上,用于处理来自服务器的api数据(例如:$http.get、$http.post)。我只是想知道是否有任何文章介绍了如何使用纯razor web页面作为处理web api的前端,或者是否有任何方法可以正确地使用.net core 例如: [Route("api/students")] public class Student

当我浏览互联网上关于使用asp.NETCore构建RESTAPI的文章和内容时,我发现RazorWeb页面并不常用于前端。它们中的大多数都集中在Angular 1和&2上,用于处理来自服务器的api数据(例如:$http.get、$http.post)。我只是想知道是否有任何文章介绍了如何使用纯razor web页面作为处理web api的前端,或者是否有任何方法可以正确地使用.net core

例如:

[Route("api/students")]  
public class StudentsController : Controller
{
    private IStudentRepository _repository;

    public StudentsController(IStudentRepository repository)
    {
        _repository = repository;
    }

    [HttpGet("")]
    public IActionResult Get() 
    {           
        var results = _repository.GetAllStudents();

        return Ok(Mapper.Map<IEnumerable<StudentViewModel>>(results));
    }

有什么方法可以在razor视图中呈现api吗?

您可以使用razor来调用WebAPI,但这是毫无意义的,因为您将错过现代web开发的所有好处,例如,您必须回发到服务器并重新加载整个页面,而不是使用ajax请求,只加载页面的一部分

实际上,您必须从MVC控制器或控制器内的某个facade类调用webapi,获取数据响应,然后使用razor将其输出到视图中


我甚至不想为这个发布代码,因为你最好使用Angular或一些JS框架,因为你最终会得到一个更好的产品。

这不是Razor的用途。它是在服务器上执行的HTML呈现引擎。它不会使用javascript代码来调用API。您最终需要编写代码来实现这一点。您仍然可以使用Razor来创建HTML页面,但我认为如果您使用Razor以外的其他工具来编写该部分,您会感觉更好。谢谢您的评论。这是否意味着我应该用其他一些语言编写,比如jQuery,以便在razor web页面中集成web api?(若我不打算使用angular等)该方法在.NETCore中仍然相关吗?
$http.get("/api/students")
    .then(function (response) {          
        ...
    }