Looking for asp.net-web-api2 Answers? Try Ask4KnowledgeBase
Looking for asp.net-web-api2 Keywords? Try Ask4Keywords

asp.net-web-api2asp.net-web-api2 시작하기


비고

이 섹션에서는 asp.net-web-api2가 무엇인지, 개발자가 왜 그것을 사용하려고하는지에 대한 개요를 제공합니다.

또한 asp.net-web-api2 내의 큰 주제를 언급하고 관련 주제와 연결됩니다. asp.net-web-api2의 설명서가 새로운 것이므로 관련 주제의 초기 버전을 만들어야 할 수 있습니다.

안녕하세요 웹 API

Web API 2 - Hello World 예제

우리는 Json에게 메시지와 사용자 이름을 반환하는 새로운 Web API 애플리케이션을 만들 예정입니다.
시작하자! 먼저 Visual Studio를 사용하여 새 Web API 프로젝트를 만들고 빈 템플릿을 선택하십시오. "Web API"폴더를 확인하십시오 :

여기에 이미지 설명을 입력하십시오.

참고 ASP.NET API 페이지를 제공하기 위해 ASP.NET MVC에 대한 참조를 추가하기 때문에 "Web API"템플릿을 선택하지 않았습니다. 그리고 그러한 기본 응용 프로그램에서 우리는 실제로 그것을 필요로하지 않습니다.

모델 추가

모델은 앱의 일부 데이터를 나타내는 C # 클래스입니다. ASP.NET 웹 API는 모델을 JSON, XML 또는 일부 다른 형식 (구성에 따라 다름)으로 자동 직렬화 할 수 있습니다.

우리의 응용 프로그램에서는 하나의 모델 만 만들 것이지만 실제 응용 프로그램에는 일반적으로 많은 모델이 있습니다.

솔루션 탐색기에서 모델 폴더를 마우스 오른쪽 단추로 클릭하십시오. 다음으로 Add 를 선택하고 Class 를 선택하십시오. "HelloMessage"클래스의 이름을 지정하십시오. 우리 모델에는 MessageTextUserName의 두 가지 속성이 필요합니다.

namespace WebApiHelloWorld.Models
{
    public class HelloMessage
    {
        public string MessageText { get; set; }
        public string UserName { get; set; }
    }
}
 

컨트롤러 추가하기

컨트롤러가 HTTP 요청을 처리합니다. 우리의 애플 리케이션은 Hello 메시지와 사용자 이름 (URL에서 전달할 것입니다)을 가진 Json을 반환하는 컨트롤러 하나만 필요합니다.
솔루션 탐색기에서 Controllers 폴더를 마우스 오른쪽 단추로 누릅니다. 다음으로 Add 를 선택한 다음 Controller 를 선택하십시오. 열린 창에서 Web API Controller - Empty를 선택하고 Add를 클릭 하십시오 .

여기에 이미지 설명을 입력하십시오.

컨트롤러 이름을 "HelloController"로 설정하십시오. 다음으로 생성 된 컨트롤러의 코드를 편집합니다. Hello 메세지를 돌려주는 메소드를 추가 할 필요가 있습니다.

using System.Web.Http;
using WebApiHelloWorld.Models;

namespace WebApiHelloWorld.Controllers
{
    public class HelloController : ApiController
    {
        public HelloMessage GetMessage(string name)
        {
            HelloMessage message = new HelloMessage
            {
                MessageText = "Hello my Dear!",
                UserName = name
            };

            return message;
        }
    }
}
 

참고 using WebApiHelloWorld.Models 추가해야합니다. 컨트롤러가 없으면 컨트롤러가 HelloMessage 클래스를 찾지 못합니다.

그게 다야! 이제는 응용 프로그램을 빌드하고 시작하기 만하면됩니다. 간단히 Ctrl + F5 또는 F5 (디버깅하지 않고 시작)를 누르 십시오 . 비주얼 스튜디오에서 웹 브라우저를 실행합니다. 당신은 당신의 컨트롤러에 전화해야합니다. 이렇게하려면 URL "/ api / hello? name = John"끝에 추가하십시오. 결과는 다음과 같아야합니다.

{
    "MessageText": "Hello my Dear!",
    "UserName": "John"
}
 

설치 또는 설정

asp.net-web-api 2 설정 또는 설치에 대한 자세한 지침.

왜 그리고 왜 Asp.Net Web API2?

무엇과 왜?

Asp.Net의 웹 API2는 웹 API의 최신 버전입니다. Asp.Net 프레임 워크가 제공하는 모든 장점을 사용하여 RESTful 웹 서비스를 구현하는 쉬운 방법입니다. REST의 기본 원칙을 이해하면 Asp.net 웹 API2를 매우 쉽게 구현할 수 있습니다. Web API2는 Asp.Net의 모듈 식 플러그 가능 파이프 라인 모델을 기반으로합니다. 즉, 웹 API2를 호스팅하는 서버가 요청을 받으면 먼저 Asp.Nets 요청 파이프 라인을 통과합니다. 기본 기능으로는 충분하지 않은 경우 쉽게 자신의 모듈을 추가 할 수 있습니다. ASP.net vNext 에 대한 최근 발표를 통해 Windows Server 외부에서 웹 API2를 호스팅하여 잠재적으로 전체 사용 사례를 열 수 있음을 의미합니다. 자세한 내용은 여기 를 참조 하십시오 .

어떻게 작동합니까?

Web API2는 MVC의 Controller 및 Action 개념을 사용합니다. 리소스는 컨트롤러에 직접 매핑됩니다. 일반적으로 각 주요 데이터 엔티티 (제품, 사람, 주문 등)마다 서로 다른 컨트롤러를 사용하게됩니다. 웹 API2는 Asp.Net 라우팅 엔진을 사용하여 URL을 컨트롤러에 매핑합니다. 일반적으로 API는 API 컨트롤러를 동일한 웹 사이트의 다른 비 API와 구별하는 데 도움이되는 /api/ route 내에 있습니다.

액션은 특정 HTTP 동사에 매핑하는 데 사용됩니다. 예를 들어 일반적으로 모든 엔터티를 반환하는 GET 액션이 있습니다. 이 동작은 /api/Products (여기서 'products'는 컨트롤러 임)에 응답하고 다음과 같이 보입니다.

 public IEnumerable<string> Get()
 {
     return new string[] { "value1", "value2" };
 }
 

특정 ID 를 받아들이고 특정 엔티티를 반환하는 GET 조치가있을 수도 있습니다. /api/Products/81 응답하고 다음과 같이 보일 것입니다 :

public string Get(int id)
 {
    return "value";
 }
 

웹 API를 사용하면 많은 숨겨진 이점을 누릴 수 있습니다. 실제로는 실현되지 않을 수도 있지만 실제로 많은 작업을 절약 할 수 있습니다.

웹 API2는 'One Asp.Net'

웹 API2는 'One Asp.Net'제품군의 일부로, 현재 MVC 또는 웹 양식과 함께 사용할 수있는 모든 훌륭한 공유 기능을 기본적으로 지원합니다. 여기에는 몇 가지 예가 포함됩니다.

  • 엔티티 프레임 워크
  • 권한 부여 및 ID
  • 발판
  • 라우팅

직렬화와 모델 바인딩

웹 API2는 기본적으로 XML 또는 JSON (JSON이 기본값)으로 응답을 제공하도록 설정됩니다. 그러나 개발자는 변환이나 구문 분석을 할 필요가 없습니다. 강력하게 형식화 된 객체를 반환하기 만하면 Web API2가이를 XML 또는 JSON으로 변환하여 호출 클라이언트로 반환합니다. 이는 Content Negotiation이라는 프로세스입니다. 다음은 강력한 형식의 Product 객체를 반환하는 GET 액션의 예입니다.

 public Product GetProduct(int id)
 {
    var product = _products.FirstOrDefault(p => p.ID == id);
    if (product == null)
    {
       throw new HttpResponseException(HttpStatusCode.NotFound);
    }
    return Request.CreateResponse(HttpStatusCode.OK, product);
 }
 

이는 모델 유효성 검사라는 기능을 사용하여 수신 요청에도 적용됩니다. 웹 API2는 모델 유효성 검사를 사용하여 들어오는 응답 본문 데이터를 강력한 형식의 개체로 유효성을 분석하고 구문 분석하여 코드에서 사용할 수 있습니다. 다음은 모델 바인딩의 예입니다.

 public HttpResponseMessage Post(Product product)
 {
     if (ModelState.IsValid)
     {
         // Do something with the product (not shown).
 
         return new HttpResponseMessage(HttpStatusCode.OK);
     }
     else
     {
         return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
     }
 }