ASP.NET 웹 API의 반환 데이터 형식 및 종속 주입

3547 단어

이 편은 ASP와 관련된다.NET 웹 API의 반환 데이터가 적절하고 종속 주입됩니다.데이터 가져오기
 
public IEnumerable<Food> Get()
{
    var results = reop.GetAllFoods()
        .OrderBy(f => f.Description)
        .Take(25)
        .ToList();
    return results;
}

 
기본적으로 ASP.NET API 컨트롤러 메서드가 json 데이터 형식을 반환합니다.요청할 때 다른 형식을 요구할 수 있습니다. 예를 들어 User-Agent:FiddlerHost:localhost:8000Accept:text/xml 요청 데이터도 여러 형식을 요구할 수 있습니다. 예를 들어 User-Agent:FiddlerHost:localhost:8000Accept:text/xml,applicaiton/json,text/html 이때 서비스 측은 클라이언트가 받아들일 수 있는 유형의 그룹을 먼저 볼 수 있습니다.그리고 서버에서 받아들일 수 있는 형식 그룹과 일치하며, 서버에서는 기본적으로 json을 되돌려줍니다. 따라서 위에서 요청한 json 데이터를 되돌려줍니다.되돌아오는 json 데이터는 다음과 같습니다:Description:'dddd'즉 알파벳 대문자입니다.어떻게 자모를 소문자로 바꿉니까?물론 보기 모델의 속성명 첫 번째 알파벳 소문자를 통해 실현할 수 있다.하지만 Formatter를 사용자 정의할 수도 있습니다.사용자 정의 반환 데이터의 형식은 WebApiConfig입니다.cs 파일에서
 
using Newtonsoft.Json.Serialization;

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new {id = RouteParameter.Optional}
        );
        
        var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().FirstOrDefault();
        jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
    }
}

 
이 때 되돌아오는 데이터 형식은 대체로: description:'dddd'는 Dependency Injection 주입에 의존합니다. 예를 들어 controller에서 우리는 구조 함수를 통해repoitory 인터페이스에 주입하기를 원합니다.
 
public class FoodsController : ApiController
{
    IFoodRepository _reop;
    
    public FoodsController(IFoodRepository reop)
    {
        _repo = repo;
    }
}

 
런타임 시 오류 보고: System.Invalid Operaiton Exception은 어떻게 API로 하여금 구조 함수를 통한 의존 주입을 지원하게 합니까?Ninject를 설치합니다.MVC3 설치 후 AppData 파일에 NinjectWebCommon 클래스가 하나 더 있습니다.종속은 해당 Register Services에 등록할 수 있습니다.
 
private static void RegisterServices(IKernel kernel)
{
    kernel.Bind<IFoodRepository>().To<FoodRepository>();
}

 
여기서 IOC Container에게 IReposiotory를 요청할 때 Repository 실례를 되돌려달라고 합니다.마지막으로 API Ninject의 존재를 알려야 합니다.NinjectWebCommon 클래스의 CreateKernel 방법에서WebApiContrib을 설치합니다.IoC.Ninject
 
using WebApiContrib.IoC.Ninject;
...

private static IKernel Createkernel()
{
    var kernel = new StandardKernel();
    
    //  API
    GlobalConfiguraiton.Configuration.DependencyResolver = new NinjectResolver(kernel);
}

좋은 웹페이지 즐겨찾기