2015-07-03 65 views
0

語境是否可以將我的Web API轉換爲OData API?

我有以下形式的現有Web API: http://site/api/ {地區} slicer1 =阿爾法& slicer1 =公測&開始時間=有時&結束時間=有時

它在ASP中實現MVC。 API的函數處理參數並將它們提供給SQL查詢。成功時,它會返回一個IHttpActionResult和來自SQL的JSON數據。

請注意,API缺少實體模型或實體關係圖。它本質上只是一個SQL查詢的包裝器。

問題

最近,我開始學習的OData。看起來OData專爲URL本身設計,以控制數據的過濾方式,而不是創建自定義SQL查詢來過濾。

因此,我想回答我的Web API是否可以轉換爲OData API,如果是,那麼需要做什麼OData功能(例如,OData v4功能可能會有用) ?

澄清

  1. 我沒有任何代碼寫的,我也沒有要求代碼作爲答案。
  2. 我在尋找什麼OData功能可以啓用我的場景(v4功能,操作等等),或者OData和Web API如此不同以至於我的問題沒有意義。
  3. 預計「你爲什麼問」這個問題 - 我只是對技術上的可行性感興趣,因爲它是一種學習練習。

回答

1

你可以切換到OData API,但如果你沒有實體,即沒有IQueryable來查詢,你仍然必須自己做SQL命令。這並不難 - 我們在項目中工作。

您還必須問自己想要切換到OData的程度。例如,您可以決定使用它的(類型安全的)查詢字符串分析功能,並從分析的過濾器樹中生成您自己的SQL(如上所述)。另一方面,擁有完全成熟的OData API也會規定響應格式符合標準。這意味着您可以使用OData注意工具(例如Excel,KendoUI網格等)開始連接到您的API。我不知道這是否會爲您的使用情況帶來任何好處。

你的問題

我需要做的

是不完全清楚,我什麼OData的能力。沒有OData功能可以幫助您從Web API遷移到OData API。 OData只是一組標準化查詢(CRUD)和響應格式。您也可以通過使用開箱即用的Web API工具自行實施所有這些工具來遵從OData,但可能您希望使用Web API OData包。

對你而言,最重要的問題是問自己使用OData有什麼優勢。

+0

你提到了「例如,你可以決定使用它的(類型安全的)查詢字符串解析功能,並從解析的過濾器樹中生成你自己的SQL」 - 你知道我在哪裏可以找到這個在線例子? – Craig

+1

是的。例如這裏:https://github.com/OData/ODataSamples/tree/master/WebApi/v4/NHibernateQueryableSample。這個活頁夾的結果是一個NHibernate查詢,它幾乎看起來像SQL。你可以把它作爲一個起點。 – Dejan

相關問題