问题标签 [asp.net-web-api-routing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - ASP NET Web API 路由模板
我有一个名为 Agency 的实体,具有以下 api
我使用的路线模板是
显然,第 2 和第 3 之间存在歧义。我确实有一个解决方法,将 id 放入查询字符串
我认为必须有聪明的方法。你能就此提出建议吗?
谢谢
.net - 路线中是否可以有多部分动作?
好的,典型的路线可能如下所示:
问题是我们现有的端点看起来像这样
我们的支付控制器就是一个例子。我们可能有以下端点:
方法名称分别为:
因此,不必将每个端点添加到 WebApiConfig 以保持我们的约定,有没有办法使用模板来处理这种情况?
asp.net-web-api - 为 ASP.NET Web API 应用程序生成特定于版本的帮助文档页面
我正在使用 WebAPI版本控制包通过 X-Api-Header 使用“VersionHeaderVersionedControllerSelector”对我的 API 进行版本控制。我还使用Microsoft.AspNet.WebApi.HelpPage自动生成 API 文档。为了使控制器 versionign 工作,它们需要以 VersionXYZ 作为命名空间中的后缀进行命名空间,以便“VersionHeaderVersionedControllerSelector”能够将请求路由到适当版本的控制器,如下所示:
这按预期工作,但是当我查看生成的帮助页面时,ApiDescription包含来自 ID ( GETapi/Version1.Products ) 和 RelativePath( api/Version1.Products ) 属性中命名空间的“VersionXYZ”后缀。理想情况下,我想做的是有一个顶级帮助页面,其中只有 API 版本号和钻取会以正常方式显示 API,即 ApiDescription.ID = GETapi/Products 和 ApiDescription.RelativePath = api/Products
有没有办法使用开箱即用的 API 来实现这一点,还是我需要推出自己的ApiExplorer实现
file-upload - 使用 MVC4 Web-API 的文件上传表单:出现错误 101 (net::ERR_CONNECTION_RESET):连接已重置。错误
尝试使用 VS2010 访问 MVC4 Web-API 应用程序中的控制器操作时,出现网页不可用错误。我正在尝试上传一个小型(小于 1MB)的 pdf 文档,创建一个 byte[] 以传递给另一个服务。但是,我无法进入我的普通控制器或我的 api 控制器。我的应用程序有效,所有视图/部分/等。除了这个(带有文件上传表单的页面)之外,都显示得很好。这个视图是一个强类型的局部视图。
我尝试使用此处显示的方法:上传文件 MVC 4 Web API .NET 4以及此处:http: //blogs.msdn.com/b/henrikn/archive/2012/03/01/file-upload -and-asp-net-web-api.aspx并且它们都不起作用,因为我的操作属性找不到我的操作。无论我放 api/Documents 还是 Home/api/Documents 都行不通。所以我放弃了,回到我的 html 助手 beginform,希望它会以这种方式找到它……但它没有。因此,在放弃了花哨的 web-api 东西(无法异步工作)之后,我想我只是去老学校并通过表格传递文件,但我得到了同样的错误。我还尝试重新创建页面,调整我的 httphandlers,运行时调整,路由和 apiroutes,但完全不知所措。请帮忙!
我的用户界面:
我的错误:
我的表格:
我的 API 控制器:我知道这没有意义,但我有一个断点来查看它是否到达这里,但它没有......
我的普通控制器动作:
我的 WebApiConfig:
我的路线配置:
我的 WebConfig 的一部分:
asp.net-web-api - asp.net web api 路由设计(多路由)
我目前正在使用 ASP.NET Web API 设计一个 REST api。
我想提供这样的方法(http方法无关紧要 - 应该适用于所有人):
- /api/客户端
- /api/client/CID1234(CID1234 = ID)
- /api/client/CID1234/orders(订单=操作)
问题是: Id应该是可选的 - /api/client 可能会返回客户端列表 Action也应该是可选的 - 在一种情况下,我想获取特定的客户端,而在另一种情况下,我想对该客户端执行特定操作. (RPC 风格)
我认为我不能使用约束,因为我使用的“ID”看起来非常不同。
这种方法不起作用:
这种方法也不起作用:
例如,这会返回 404,因为它无法区分“action”和“id”。“在与名称“CID1234”匹配的控制器“客户端”上未找到任何操作。
为了获得我需要的灵活性,我应该使用自定义 Actionselector 吗?或者是否有可能使用内置功能的 Web API?我了解有人可能希望将订单用作单独的实体。但我还不如在那里有真正的“行动”(而不是“实体”)。像“丢失密码”,“更改密码”等等。
感谢您的意见
PS:这里描述的事情并不是我愿意做的事情。糟糕的 api 设计。
asp.net-web-api - UriPathExtensionMapping 控制 WebAPI 中的响应格式
我在让 UriPathExtensionMapping 在 ASP.NET WebAPI 中工作时遇到问题。我的设置如下:
我的路线是:
我的全球 ASAX 文件是:
我的控制器是:
使用 curl 发出请求时,JSON 是默认响应,即使我明确请求 XML,我仍然会得到 JSON:
回报:
谁能看到我的设置有问题?
以下代码在配置路由后映射 Global.asax 文件中的扩展:
c# - 特定控制器操作的 ASP.NET MVC 4 路由
我有以下控制器/动作:
想法是不必指定summaryOnly 参数,但必须指定minDate 和maxDate。
有人可以提供上述路线吗?
asp.net-mvc-4 - HttpConfiguration 的 RouteHandler
我偶然发现了一篇关于 ASP.Net MVC 的 WebAPI 的 RouteHandlers 的有趣文章:
http://techbrij.com/separate-web-api-action-mobile-asp-net-mvc
在本文中,它展示了来自桌面 Web 浏览器和来自移动设备的相同 WebAPI 请求如何路由到不同的控制器。该示例使用如下所示的 RouteHandler:
此代码用于 Global.asax。
但是,我在 App_Start 中通过 WebApiConfig 注册我的 WebAPI 路由,其中 HttpConfiguration 被传递到 config 方法中:
config.Routes.MapHttpRoute 没有处理 RouteHandler 的能力。如何将 RouteHandler 与 config.Routes.MapHttpRoute 一起使用?
谢谢你的帮助。
更新
经过进一步研究,我想我找到了我正在寻找的东西,但不确定这种方法是否好用。
我的目标是拦截传入的请求并确定请求的设备类型,以便我可以定制对正确设备(台式机、平板电脑、移动设备等)的响应。HttpRequestMessage 授予您对 Headers 和 UserAgent 字符串的访问权限。我找到了一种分析 UserAgent 以确定设备类型的方法(http://techbrij.com/display-mode-mobile-tablet-tv-aspnet-mvc)。我正在使用命名约定,将 DeviceType 放在控制器名称之后:
值[设备类型]控制器
例子:
- 值控制器
- 价值观移动控制器
- 值平板控制器
我从 UserAgent 确定设备类型,然后在 RouteData 集合中换出控制器名称。
**注意:下面的 DisplayModeConfig.GetDeviceType(userAgent) 使用上面链接中概述的方法
通过根据设备类型指示哪个控制器处理响应,我可以通过定制对设备类型的正确响应来更好地控制用户体验。
您对这种方法有何看法?你能看出这种方法有什么问题吗?
asp.net-web-api - 在 MVC4 中使用 WebAPI 找不到路由
在我的 WebApiConfig.cs 文件中,我定义了以下路由:(这是此处定义的唯一路由)
我正在做的帖子是:
我的控制器是这样的:
我得到的错误是:
从菲尔的程序来看,这条路线应该可行。有什么想法吗?
asp.net - 向 asp.net web api 控制器发送多部分/混合 http 请求
我想向 asp.net web api 控制器发送一个多部分/混合 http 请求 ($batch),如下所示:
问题是我的请求没有路由到我的控制器中的正确操作,有没有解决方案来解决这个问题?!