访问内部API控制器

Jos*_*ers 2 .net c# asp.net-mvc asp.net-mvc-5

有没有办法从另一个类调用应用程序 API 控制器而不使用 API 的 url?

例如我在“personContoller”中有这个方法

    public async Task<ActionResult> GetPersonRecord(string id)
    {
        Person person;
        var link = "api/entity/Person/" + id + "?format=json";
        string results = await OneIMAction(link);
        person = JsonConvert.DeserializeObject<Person>(results);
        string json = JsonConvert.SerializeObject(person, Formatting.Indented);
        return Content(json, "application/json");
    }
Run Code Online (Sandbox Code Playgroud)

如何在同一应用程序中的另一个 C# 类中访问此方法的 JSON 结果,而无需使用 Web 请求?那可能吗?

Sae*_*far 6

根据单一职责原则(SOLID 的第一原则),\xe2\x80\x9ce 每个模块或类都应该对软件\xe2\x80\x9d 提供的功能的单个部分负责。

\n\n

从 API Controller 继承的类必须响应 Web 请求。如果我们希望 API 控制器能够访问另一个 API 控制器的某些操作,我们应该创建一个 Web 请求并调用该 URL(不推荐)。如果我们希望一个任务由多个方法调用,我们会将其转移到称为类服务的 Facade。想要使用它的 API 控制器的所有操作都将使用该类服务。

\n\n
public class TestService \n{\n    public void Do()\n    {\n      // ...\n    }\n}\n\n\npublic class HomeController1 : Controller\n{\n    public ActionResult Index()\n    {\n        var service = new TestService();\n        service.Do();\n        return View();\n    }\n}\n\n\npublic class HomeController2 : Controller\n{\n    public ActionResult Index()\n    {\n        var service = new TestService();\n        service.Do();\n        return View();\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n