Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#을 사용하여 다른 응용 프로그램에서 Asp.Net WebAPI 끝점을 사용하는 방법은 무엇입니까?

<시간/>

Http클라이언트 클래스는 URL에서 HTTP 요청/응답을 보내고 받기 위한 기본 클래스를 제공합니다. .NET 프레임워크의 지원되는 비동기 기능입니다. HttpClient는 여러 동시 요청을 처리할 수 있습니다. HttpWebRequest 및 HttpWebResponse 위의 레이어입니다. HttpClient가 있는 모든 메서드는 비동기식입니다. HttpClient는 System.Net.Http 네임스페이스에서 사용할 수 있습니다.

StudentController와 각각의 actionmethod가 있는 WebAPI 응용 프로그램을 만들어 보겠습니다.

학생 모델

namespace DemoWebApplication.Models{
   public class Student{
      public int Id { get; set; }
      public string Name { get; set; }
   }
}

학생 컨트롤러

using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class StudentController : ApiController{
      List<Student> students = new List<Student>{
         new Student{
            Id = 1,
            Name = "Mark"
         },
         new Student{
            Id = 2,
            Name = "John"
         }
      };
      public IEnumerable<Student> Get(){
         return students;
      }
      public Student Get(int id){
         var studentForId = students.FirstOrDefault(x => x.Id == id);
         return studentForId;
      }
   }
}

C#을 사용하여 다른 응용 프로그램에서 Asp.Net WebAPI 끝점을 사용하는 방법은 무엇입니까?

C#을 사용하여 다른 응용 프로그램에서 Asp.Net WebAPI 끝점을 사용하는 방법은 무엇입니까?

이제 콘솔 애플리케이션을 만들어 보겠습니다. 위에서 생성한 WebApi 끝점을 사용하여 학생 세부 정보를 얻으려는 곳입니다.

using System;
using System.Net.Http;
namespace DemoApplication{
   public class Program{
      static void Main(string[] args){
         using (var httpClient = new HttpClient()){
            Console.WriteLine("Calling WebApi for get all students");
            var students = GetResponse("student");
            Console.WriteLine($"All Students: {students}");
            Console.WriteLine("Calling WebApi for student id 2");
            var studentForId = GetResponse("student/2");
            Console.WriteLine($"Student for Id 2: {students}");
            Console.ReadLine();
         }
      }
      private static string GetResponse(string url){
         using (var httpClient = new HttpClient()){
            httpClient.BaseAddress = new Uri("https://localhost:58174/api/");
            var responseTask = httpClient.GetAsync(url);
            var result = responseTask.Result;
            var readTask = result.Content.ReadAsStringAsync();
            return readTask.Result;
         }
      }
   }
}

출력

Calling WebApi for get all students
All Students: [{"Id":1,"Name":"Mark"},{"Id":2,"Name":"John"}]
Calling WebApi for student id 2
Student for Id 2: {"Id":2,"Name":"John"}

위의 예에서 WebApi의 엔드포인트가 별도의 콘솔 애플리케이션에서 호출되는 것을 볼 수 있습니다.