如何从控制台应用程序访问Web API中的不同方法?

时间:2012-11-06 13:31:34

标签: asp.net-mvc-4 routing asp.net-web-api

当我的控制台应用程序中有多个get,post和delete方法时,如何在我的webapi中访问我的方法,我如何区分它们这是我的api控制器

            public IQueryable<Store> GetAll()
    {                     
        return StoreRepository.All;
    }
    //GetAll Stores including all relation tables
    public IQueryable<Store> GetAllIncluding()
    {                   
        return StoreRepository.AllIncluding();
    }

    //Get store by id/id=5
    public Store Find(long storeid)
    {
        stores = StoreRepository.Find(storeid);
        return stores;
    }

    //Insert or Update Store
    public void InsertorUpdateWithGraph(Store store)
    {
        StoreRepository.InsertOrUpdateWithGraph(store);
    }

    //Insert or Update StoreDetail
    public void InsertOrUpdateStoreDetail(StoreDetail storedetail)
    {
        StoreRepository.InsertOrUpdateStoreDetail(storedetail);
    }

    //Get StoreDetail by id/id=5
    public StoreDetail FindStoreDetail(long storedetailid)
    {
        storedetail = StoreRepository.FindStoreDetail(storedetailid);
        return storedetail;
    }

     public List<StoreDetail> GetAllStoreDetails(long storedetailid)
    {
        List<StoreDetail> storedetails = StoreRepository.GetAllStoreDetails(storedetailid);
        return storedetails;
    }
      public Sage FindSage(long sageid)
    {
        return StoreRepository.FindSage(sageid);
    }
像这样我可能有两个以上的获取,发布,插入或更新方法我必须从我的控制台应用程序访问此方法如何映射我想要的方法,任何人都可以帮助我在这里如何定义路由为此

1 个答案:

答案 0 :(得分:1)

您可以拥有多个“获取...”操作,但您可以在没有HttpGet属性的情况下离开,因为它们以“获取”开头。 “查找...”方法需要使用HttpGet进行修饰 那些“插入...”您需要使用HttpPostHttpPut属性进行装饰。 可以通过两种方式配置这些方法的参数。您可以将{id:"ddd",name:"nnn"}之类的对象发布到

之类的操作
MyAction(int id, string name) 

Web APi框架威胁任何以Post ...,Delete ...,Get ...,Put ...开头的方法作为相应的Http Verbs。但是你可以按照你的方式命名它们,然后使用Http属性进行装饰。

当涉及参数时,它是关于控制器动作与路线的相关性。

现在,要从控制台应用程序运行它,您可以使用HttpClient

     string _webSiteUrl = "www.ffsdfds.com"
     HttpClient client = new HttpClient();
     client.BaseAddress = new Uri(_webSiteUrl);
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); // for posting
     HttpResponseMessage resp = httpClient.GetAsync("/api/area/getall").Result;