【问题标题】:How to create web api methods?如何创建 web api 方法?
【发布时间】:2023-03-28 05:35:01
【问题描述】:

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

            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)

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

【问题讨论】:

  • 当您创建一个新的 WebApi 项目时,您将拥有自动生成的控制器,例如 Account、Home。看看它你可以理解abotu动词
  • 感谢您的回复。我有一个疑问。我使用 angularjs 作为前端。例如,我有 public async Task Register(RegisterBindingModel model) 这个方法 id 用来保存数据。我如何从 angularjs 调用这个方法?

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


【解决方案1】:

在考虑 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)
    {
    }
}

有一些很好的信息herehere 设计了restful api。

【讨论】:

  • 感谢您的帖子。我以一种干净的方式获得了基本的理解。我仍然有几点。除了 void 我可以有其他返回类型吗?我可以在一个控制器中有多个帖子吗?如果有如何区分它们?
  • @NiranjanGodbole:添加了关于 api 设计的一些好东西的讨论和系列。希望这会有所帮助:)
  • 是的,我会通过的。谢谢。
【解决方案2】:

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

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

Here你可以找到更多信息。

【讨论】:

  • 感谢您的回复。
猜你喜欢
  • 2018-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多