c# - 如何干净地构建 MS Web Api 的 REST API 端点?

标签 c# asp.net-mvc rest asp.net-web-api http-get

我有一个名为 PIM(产品信息管理器)的数据模型,它要求我为每个请求传递一个公司 AppId。因此,如果我想获取所有产品,我将传递公司 AppId 和资源 id。

我正在尝试以干净的方式构建我的 REST 端点,我想出了这个:

http://api.example.com/pim/44/products/    -- Gets all products in company 44
http://api.example.com/pim/44/products/123 -- Get product 123 in company 123

这是实现此目的的最佳方式吗?

我计划制作我的默认 Controller pim/{appId}/{controller}/{id}

如果我这样做,我的 MVC 路由会遇到问题吗? 如何在 GET 方法中访问 {appId} token ?

最佳答案

您可以拥有您所描述的路线,并使用它

routes.MapHttpRoute(
    name: "Default",
    routeTemplate: "pim/{appId}/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

在你的 Controller 中你将有以下方法:

public class ProductsController : ApiController
{
    public Product Get(int appId, int id) { ... }
    public List<Product> Get(int appId) { ... }
}

由于参数名称(appId、id)与路由参数匹配,因此 ASP.NET Web API 应在调用操作时将 URL 值绑定(bind)到参数。

关于c# - 如何干净地构建 MS Web Api 的 REST API 端点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16351146/

相关文章:

python - 基于用户角色以 REST 方式路由 API

c# - 我可以在 Azure Functions 2.0 中同时使用 dotnet 和 node 吗?

c# - 通过重用事件处理程序清除多个文本框

javascript - Jquery 复选框更改功能在 IE 8 中不起作用

javascript - 如何在 JQuery DataTable 中单击按钮时显示警报?

c# - MVC 创建列表并自动填充

c# - 为什么 IntPtr.ToString() 返回内存地址而不是字符串?

c# - 在 Xamarin Forms 背后的代码中设置 ListView ItemSource 绑定(bind)

java - REST是API,还是: REST vs Java Interface?

REST API 授权 header 或自定义 header ,如 X-ABC-Token