WebApi:这两种类型的参数有什么区别

时间:2019-08-12 10:45:54

标签: c# asp.net-web-api

这是我第一次在网络API中看到这种做事方式。

因此,让我将您放在上下文中:

我有一个网络API,其中有两条路由:

方法一:

[HttpGet]
[Route("message-activity")]
public PagedResult<AuditedMessage> GetMessageActivity(int page)
{
}

方法2:

[HttpGet]
[Route("message-activity/{messageID}")]
public AuditedMessage GetMessage(string messageID)
{
}

我的问题是:

谈论webApi的良好做法。 -第一种方法可以接受吗? -这样对吗? -第二种方法有什么问题吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

使用第一种方法,将使用查询字符串指定参数。 即:message-activity?page=paramValue

使用第二种方法时,您只需在API调用URL中传递参数 即:message-activity/paramValue

这两种方法均能正常工作

答案 1 :(得分:1)

根据您已编辑的问题: 可能有问题,也可能没有。 详细说明:第二个版本仅返回单个结果,第一个版本返回分页的结果列表。 如果我有一个现有的messageID,而我仅对此消息感兴趣,则第二个最好。 如果需要显示消息列表,则第一个消息要好得多。 在普通的CRUD控制器上,我希望这两种方法都可以。

答案 2 :(得分:0)

说实话,我不喜欢任何一个。

为什么?

让我们看看第一个:

GetMessageActivity(int page)
  • 什么消息?
  • 页面是什么意思?
  • 页面大小是多少?

如果您希望它有意义并分页结果,那么它可能看起来像这样:

[HttpGet]
[Route("message-activity")]
public PagedResult<MessageActivity> GetMessageActivity(string messageID, int pageSize, int pageNumber)
{
}

当然您会更新路线以匹配该路线。

这对我来说更有意义。您返回此MessageActivity数据,无论是什么,而不是消息。如果要返回消息,请像第二种方法一样返回消息。

第二个也很奇怪:

[HttpGet]
[Route("message-activity/{messageID}")]
public AuditedMessage GetMessage(string messageID)
{
}

好吧,如果您要加载一条消息,则路由应该是消息,而不是消息活动。

类似的东西:

[HttpGet]
    [Route("message/{messageID}")]
    public AuditedMessage GetMessage(string messageID)
    {
    }

我会同时更改两者,这样才有意义。 API是为客户编写的,这些客户需要非常快速地了解发生了什么。

您无法比较两者所指的不同之处。您想处理一条消息,那么您的路线,参数和输出就需要反映出来。如果您想使用此MessageActivity,请让您的端点反映出来