2017-01-12 41 views
0

嗨,我正在開發一個restfull wep api應用程序。我對web api的世界很陌生,並且對http動詞很困惑。我的任務是使用web api2編寫服務。我有一個表在sql服務器,我正在嘗試圍繞此表做基本的crud操作。我想以json格式發送數據並將數據作爲json返回。例如,http://localhost:26079/api/User_Creation/1按預期返回json格式的數據。我的任務是在iis中託管上述方法,以便任何人都可以訪問該方法來檢索數據。我很困惑,假設如果我想插入一些數據到數據庫然後會是什麼方法?我在controllera中有下面的代碼,我可以插入數據。如何創建web api方法?

  public void Post(Noor_Users users) 
      { 
       if (ModelState.IsValid) 
       { 
        entityObject.Noor_Users.Add(users); 
        int result = entityObject.SaveChanges(); 
       } 
      } 

當我插入數據我的URL將被http://localhost:26079/,但我怎麼可能會暴露我的插入數據的方法,外面的世界?我的要求如下。

URL:/user_creation 
method:post 
Request:parameters such as fname,lname as json 
Response:0 for success 1 for failure and data(unique id assigned to each user) 

我可以得到一些幫助嗎?感謝您的考慮。

+1

當您創建新的WebApi項目時,您將擁有自動生成的控制器,如帳戶,主頁。看看它你可以明白abotu動詞 – Aravind

+0

謝謝你的回覆。我有一個疑問。我使用angularjs作爲前端。因此,例如我有公共異步任務註冊(RegisterBindingModel模型)此方法ID用於保存數據。我怎樣才能從angularjs調用這個方法? –

回答

2

當考慮REST時,理解和設計它是很重要的,因爲您正在對位置上的資源採取操作,而不是進行遠程函數調用。

所以我建議有API的 - 而不是 http://localhost:26079/api/User

- http://localhost:26079/api/User_Creation

爲了堅持休息校長。

這樣做,我很清楚地說明該API的用戶將能夠對資源進行操作(這是在這種情況下用戶)使用不同的動詞即GETPOSTPUTDELETE

看到一些例子使用的API -

請注意這裏,我們只用單個端點在我們用戶執行不同的操作通過改變不同的HTTP動詞。

默認的asp.net web api模板爲如何聲明不同的動詞方法提供了一些很好的提示,例如 -

public class UserController : ApiController 
{ 
    // GET api/<controller>/1 
    public User Get(int id) 
    { 
    } 

    // POST api/<controller> 
    public void Post([FromBody]User user) 
    { 
    } 

    // PUT api/<controller>/1 
    public void Put(int id, [FromBody]User user) 
    { 
    } 

    // DELETE api/<controller>/1 
    public void Delete(int id) 
    { 
    } 
} 

有設計上的RESTful的API一些好的信息herehere

+0

感謝您的帖子。我以一種乾淨的方式得到了我的基本理解。我仍然有幾點。而不是無效我可以有其他返回類型?我可以在一個控制器中有多個帖子嗎?如果是的話如何區分它們? –

+0

@NiranjanGodbole:在api設計上增加了一些關於一些好東西的討論和系列。希望這會有所幫助:) – Yogi

+0

是的,我會通過。謝謝。 –

0

如果你想從角打電話給你emthod,你可以用$ http.post()方法:

$http.post('/someUrl', data, config).then(successCallback, errorCallback); 

Here你可以找到更多信息。

+0

感謝您的回覆。 –