如何创建web api方法?

时间:2017-01-12 06:06:37

标签: json asp.net-mvc asp.net-web-api2

您好我正在开发一个restfull wep api应用程序。我是web api的新手,对http动词有点困惑。我的任务是使用web api2编写服务。我在sql server中有一个表,我正在尝试围绕此表进行基本的crud操作。我想以json格式发送数据并以json的形式返回数据。例如,http://localhost:26079/api/User_Creation/1按预期返回json格式的数据。我的任务是在iis中托管上述方法,以便任何人都可以访问该方法来检索数据。我很困惑,如果我想将一些数据插入db,那么该方法是什么?我在controllera中有以下代码,我能够插入数据。

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

当我插入数据时,我的网址将为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)

我可以得到一些帮助吗?谢谢你的考虑。

2 个答案:

答案 0 :(得分:2)

在考虑REST时,理解和设计它是非常重要的,因为您正在对该位置的资源采取措施,而不是进行远程函数调用。

所以我建议将API作为 - http://localhost:26079/api/User

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

为了遵守REST主体。

这样做我非常清楚地说明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

答案 1 :(得分:0)

如果你想从Angular调用你的方法,你可以使用$ http.post()方法:

 $scope.projectModel = [];
   $scope.projectData = [
            {id: 1, label: "TMS"},
            {id: 2, label: "LMS"},
            {id: 3, label: "NLMS"}
            ];

        $scope.projectsettings = {
            smartButtonTextConverter: function(itemText, originalItem) {
                return itemText;
            },
            enableSearch : true,
            scrollable : true
        };

        $scope.projectText = {
            buttonDefaultText:"Select Project"
        };

Here您可以找到更多信息。