如何将一个 web api 控制器方法调用到另一个 web api 项目中?

Jay*_*ani 6 c# asp.net asp.net-core-webapi

我有两个不同的asp.net core web api项目-->项目A和项目B。我想将项目A的控制器方法调用到项目B的控制器方法中。

例如,

方法GetDepartments()项目 A 的控制器的一个方法,它返回静态值。我想将此方法调用到项目 B 的控制器中的另一个方法GetStudents()

Ami*_*lle 7

下面是用于HttpGet Api 的HttpClient 代码示例:

            [HttpGet]
            public async Task<HttpResponseMessage> GetRequestAsync(HttpRequestMessage Query)
            {                   
                try
                {
                    using (HttpClient client = new HttpClient())
                    {                                                          
                        HttpResponseMessage response = await client.GetAsync("http://localhost:8080/document/quicksearch/"+ Query.RequestUri.Query);

                        if (response.IsSuccessStatusCode)
                        {
                            Console.Write("Success");
                        }
                        else
                        {
                            Console.Write("Failure");
                        }

                        return response;
                    }
                }
                catch (Exception e)
                {        
                    throw e;
                }
            }
Run Code Online (Sandbox Code Playgroud)

下面是用于HttpPost Api 的代码示例 HttpClient :

 Public async Task PostRequestAsync()
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("http://localhost:6740");

            var content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("", "login")
            });

            var result = await client.PostAsync("/api/Membership/exists", content);

            string resultContent = await result.Content.ReadAsStringAsync();

            Console.WriteLine(resultContent);
        }
    }
Run Code Online (Sandbox Code Playgroud)


Ish*_*are 3

您必须在 IIS 上托管项目 A,然后只需GetDepartmentsGetStudents()项目 B 的控制器中的托管 URL 调用 API。

public class ProjectBController : Controller  
{  
    //your Hosted Base URL
    string Baseurl = "http://192.168.90.1:85/";      
    // GET: Student
    public async Task<ActionResult> GetStudents()  
    {  
        List<Student> StudentInfo = new List<Student>();  

        using (var client = new HttpClient())  
        {  
            //Passing service base url  
            client.BaseAddress = new Uri(Baseurl);  

            client.DefaultRequestHeaders.Clear();  
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));  

            //Sending request to find web api REST service resource GetDepartments using HttpClient  
            HttpResponseMessage Res = await client.GetAsync("api/ProjectA/GetDepartments");  

            //Checking the response is successful or not which is sent using HttpClient  
            if (Res.IsSuccessStatusCode)  
            {  

                var ObjResponse = Res.Content.ReadAsStringAsync().Result;  
                StudentInfo = JsonConvert.DeserializeObject<List<Student>>(ObjResponse);  

            }  
            //returning the student list to view  
            return View(StudentInfo);  
        }  
    }  
}  

public class Student
{
   public int Id { get; set; }
   public string FirstName { get; set; }
   public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)