如何制作可以接收来自外部站点的请求的 ASP.NET MVC 控制器

本文关键字:请求 站点 ASP NET 控制器 MVC 外部 何制作 | 更新日期: 2023-09-27 18:34:22

我想要一个像这样的控制器

public ActionResult UnlockAssets ( string psd ) 
{
    // ... 
}

外部站点可以调用并从中返回 JSON。这可能吗?如果是这样,我应该从哪里开始?

如何制作可以接收来自外部站点的请求的 ASP.NET MVC 控制器

你可能想要一个 Web API (http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api(

这里有一个简单的例子

using System;
using System.Linq;
using System.Net;
using System.Web.Http;

 public class DocumentsController : ApiController
{
    public IHttpActionResult UnlockAssets (string psd )
    {
        var documents = new DocumentRepo();
        if (!documents.Exists(psd))
        {
            return NotFound();
        }else{
            documents.unlock(psd)
            return Ok(product);
        }
    }
}

是的,例如,外部站点可能会通过 Ajax 调用您的控制器。

外部站点将有一个带有 Ajax 的 Javascript 函数,该函数将调用 url:

http://www.yourwebsite.com/yourcontrollername/UnlockAssets?psd=value

您的响应可以是 JSON,您可以使用 ActionResult 签名并返回 JSON,但格式可能已关闭,标头响应标头可能不正确,因为不要说您有对请求者/客户端的 JSON 响应。

因此,这将是控制器的正确 ASP.NET MVC 签名方法

[HttpGet] //or [HttpPost] or both
public JsonResult UnlockAssets ( string psd ) 
{
    return Json(new { foo = "blah"}); 
    //or
    return Json(someinstanceofaclassofyours); 
}

您不需要有人建议的Web API,您可能更喜欢Web API,但实际上它只是取决于适合您的内容,您的时间表,您的客户调用您的服务器时需要什么等,您的架构的复杂性,客户需求的复杂性。

普通 ASP.NET MVC应用程序控制器可以在简单的架构(甚至是复杂的(中充当"API",并很好地满足外部客户的需求。该控制器可以为 ASP.NET MVC 站点服务器视图,并将 JSON 返回给外部调用方。如果该控制器似乎是组织架构的正确方法,那就好了。

在做出体系结构决策时,您可能会认为 Web API 更适合构建供客户端使用的实际 API,此 API 将具有文档,为客户端调用方公开各种方法,并且是健壮的。Web API 还可用于客户端调用的简单方法。没有正确或错误的选择,它只是工作的正确工具。

我想说的是,如果您已经在 ASP.NET MVC 应用程序中交织了模型、实体框架,并且您只是尝试向外部客户端公开一种方法,那么您不会看到您的 MVC 应用程序快速增长并失控,只需使用控制器。否则,请使用 Web API,方法是将 Web API 添加到现有 MVC 项目,或者最好将新的 Web API 项目添加到解决方案中。