Web API 版本控制配置

2023-11-30

我是Mvc新手,尝试编写restful api,我使用Web api类型的应用程序,并尝试创建版本控制,最后我想要像 api/v1/values/get、api/v2/values/get 这样的链接类型。我尝试在控制器文件夹中创建文件夹 v1 和 v2 ,并在那里创建名为 ValuesController 的控制器,但我的请求不起作用。我收到 HTTP 404.0 - 未找到。我如何配置路由或做一些事情来解决这个问题?


您可以使用属性路由来实现这种版本控制。对于您的示例,它看起来类似于下面的代码片段

[RoutePrefix("api/v1/values")]
public class ValuesController : ApiController
{
  public object Get(int id) { ... }
}

[RoutePrefix("api/v2/values")]
public class NewValuesController : ApiController
{
  public object Get(int id) { ... }
}

Edit

如果您有现有项目,请不要忘记启用属性路由。你的WebApi配置应包含以下片段:

public static class WebApiConfig
{
  public static void Register(HttpConfiguration config)
  {
    // Attribute routing.
    config.MapHttpAttributeRoutes();

    // Convention-based routing.
    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
  }
}

您可以删除映射HttpRoute如果您不想使用基于约定的配置,请选择部分。

您还应该确保您的全局.asax包含以下内容:

protected void Application_Start()
{
  // Pass a delegate to the Configure method.
  GlobalConfiguration.Configure(WebApiConfig.Register);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Web API 版本控制配置 的相关文章

  • 如何为 ASP.NET Mvc 缓存数据库中的大量数据

    我的网站使用 linq to sql 从数据库加载大约 50k 行数据 该数据是静态的并且永远不会改变 它的工作原理类似于垃圾邮件过滤器 需要加载所有 50k 行模式 对此进行编程的最佳方法是什么 以获得最佳性能 将整个数据加载到单个静态只
  • 如何使用 Swashbuckle 实现 OpenAPI readOnly 和 writeOnly

    我在 Net 5 0 Web API 中使用 Swashbuckle 6 1 1 我仍在学习 但我想实现一个类 其中某些属性仅在使用 阅读 时才有效GET 以及使用 a 进行 写入 时的其他属性POST 根据OpenAPI 规范 https
  • IIS 上的 ASP.NET MVC3 和 Windows Auth 不断重定向到 /Account/Login

    我正在运行 MVC3 和 Windows 身份验证 Web 应用程序 当我部署到 IIS6 时 它运行得很好 直到我遇到需要身份验证的页面 然后 当我在应用程序中没有任何痕迹并且我的 web config 配置为 Windows 身份验证时
  • Spring-data-rest 和 Spring-jpa [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 数据休息和 jpa 我使用 Embe
  • 为什么注解属性Rest.rootUrl的值必须是常量表达式?

    我在用着Android 注解框架 https github com excilys androidannotations 专门用于休息整合 我有以下代码 主机配置接口 public interface Host public String
  • 此资源不支持“multipart/form-data”

    我有 WEBAPI2 后端 我尝试从邮递员发送表单数据 但出现这个错误 没有 MediaTypeFormatter 可用于从媒体类型为 multipart form data 的内容中读取类型为 StartWorkingDay 的对象 这是
  • 如何在aspasp.net MVC中隐藏Webgrid中的列?

    我是 MVC 新手 我使用Webgrid展示一些客户价值 我需要将列及其标题隐藏起来 我该怎么做呢 CSS gridhide visibility hidden Code grid Column Id ID style gridhide 我
  • 选择另一个下拉列表时填充下拉列表[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 REST 或 Web 服务上传/下载文件

    是否可以使用 REST 或任何其他 Web 服务上传 下载文件并发送 HTML 代码 这必须可以使用 PHP Java 或 ASP I think this http www mkyong com webservices jax rs fi
  • C# API 返回字符串而不是 XML 包装的字符串

    我正在使用 ApiController 但无法调用返回 XML 以外的任何内容 public class GuideController ApiController AcceptVerbs GET HttpGet public string
  • Web API 使用 GetAll() 和 GetByIds(int[] ids) 找到多个操作

    使用标准路线 config Routes MapHttpRoute name DefaultApi routeTemplate api controller id defaults new id RouteParameter Optiona
  • UrlHelper扩展方法调用编码未执行

    我为 ASP NET MVC UrlHelper 创建了一个简单的扩展方法 它不接受任何参数 因为它的工作是从配置中查找样式表文件的名称并返回样式表的 url 扩展方法大致如下 public static string SiteStyles
  • 添加按钮,该按钮将重定向到 JQGrid 中当前行的“查看页面”

    我正在尝试添加按钮而不是View专栏但我尝试过formatter仍然按钮未加载 但其余列的记录即将到来 下面是我的代码 function grid jqGrid url Location LocationsList1 datatype js
  • Microsoft Graph API 日历 API 空 SeriesMasterId

    解决方案如下 我的朋友们 这是一个漂亮的 msft 图形 api 调用 可以通过非空 SeriesMasterId 过滤前 50 个日历结果 另请记住 如果未定义此前 50 个过滤器 则返回的 json 仅显示前 10 个结果从您的日历中匹
  • 计算 REST API 的 ETag

    我们正在构建我们使用的 REST APIETag https en wikipedia org wiki HTTP ETag有两种用途 通过允许客户端避免重新加载资源来节省带宽 对我们来说并不重要 解决并发问题 丢失更新问题 从实际角度来看
  • 使用 SignalR 检测“服务器离线”

    我们尝试在低带宽环境中使用 SignalR 在该环境中 与后端服务器的连接可以随机出现和消失 并且我们希望我们的 Web 应用程序能够做出适当的响应 看起来这个连接 API 在过去的一年里一直在变化 但根据最新的文档 我尝试连接 conne
  • 使用 MVC 5 RouteArea 属性时找不到默认区域视图

    我有一个包含多个区域的 MVC5 项目 我有一个默认区域 名为Default 并在其中有一个默认控制器 名为DefaultController 这可以通过站点路径访问 RouteArea public class DefaultContro
  • 无法将代码优先迁移应用到 mysql 数据库

    我正在使用 EF 代码优先模型开发 asp net mvc 我正在尝试首先使用 EF 代码将迁移应用到我的项目中 我正在使用 MySql 数据库 目前我使用的是 EF 4 3 1 版本和 6 6 4 0 版本的 mysql Connecto
  • 在实体框架中不使用 Dispose 或 using()

    我一路上正在编写一个网络应用程序并学习实体框架 如果我做错了什么 我很好奇 我在查询时没有使用过 dispose 或 using 语句 我的存储库示例 public User GetUserById int sessionId var us
  • Web API 2 c# 中的 Google reCaptcha

    我有一个 ASP NET Web API 2 项目 我正在尝试从表单中读取 Google Captcha 我尝试了这段代码 public string Post FoundingRequest model var response Requ

随机推荐

  • 如何从文件中读取变量,每行多个变量?

    我正在尝试从一个文件中读取数据 该文件有多行 每行都有 3 个我想要分配给变量并使用的信息 我想出了如何在终端上简单地显示它们 但无法弄清楚如何实际将它们分配给变量 while read i do for j in i do echo j
  • 使用 graphviz 绘制大图的最佳方法是什么

    我需要在图像上绘制大型数据集 我使用 graphvis 命令行和所有可用的工具 dot neato twopi 等 但结果不可读并且包含重叠 我需要的是显示边缘带有标签的节点 重叠最小化 以便图形可读并且可以打印在 A4 或 A3 纸上 我
  • jquery Ajax 使用 Internet Explorer 响应“未定义”

    我遇到了 jquery ajax 请求的情况
  • 'WCHAR* 类型的参数与“const char*”不兼容'

    DWORD ProcMem Module LPSTR ModuleName HANDLE hModule CreateToolhelp32Snapshot TH32CS SNAPMODULE dwPID MODULEENTRY32 mEnt
  • 为什么Java 8提供方法引用?

    打电话用什么比较好 names stream forEach System out println Than names stream forEach n gt System out println n 尽管事实上你必须编写更少的代码 在
  • sizeof 以及当一个字节大于 8 位时?

    Since sizeof是一个运算符 为什么我们可以使用sizeof something 就像函数调用一样 什么时候一个字节不是8位 此上下文中的字节与无符号字符相同 并且可能大于 8 位 字节有可能小于8位吗 既然 sizeof 是一个运
  • js 异步/等待返回承诺

    只做一个简单的功能 async function doAsync return await test console log doAsync 输出 承诺 PromiseStatus pending PromiseValue undefine
  • Delphi Chromium - 迭代 DOM

    我正在尝试使用 TChromium 迭代 DOM 并且因为我使用 Delphi 2007 所以我无法使用匿名方法 所以我创建了一个继承 TCEFDomVisitorOwn 的类 我的代码如下 但由于某种原因 访问 过程从未被调用 所以什么也
  • 使用bunyan logger登录nodejs

    我正在我的nodejs代码中初始化bunyan记录器 如下所示 var log bunyan createLogger name myapp stream process stdout level info 这是来自 Bunyan 文档ht
  • 将嵌套字典转换为 IReadOnlyDictionary

    我正在尝试给出一个IReadOnly 内部参考Collection对象 这在大多数情况下效果很好 但如果我想将包含集合的字典转换为IReadOnlyDictionary含有一个IReadOnlyCollection 这是一个代码示例 var
  • Python Outlook 获取来自发件人的所有电子邮件

    我正在尝试使用 python 来浏览 Outlook 并获取发件人的所有电子邮件 我已经看过但不知道如何做到这一点 我可以按主题获取电子邮件并返回发件人 但我希望获取所有发件人然后返回主题 这就是我用来按主题获取发件人的方法 import
  • 如何从浏览器保存 .pdf?

    我尝试使用在 stackoverflow 上找到的不同方法来保存 pdf 文件 包括FileUtils IO然而 我总是会把它弄坏 当我使用记事本打开损坏的文件时 我得到以下内容
  • 将gridview转换为图像

    我想将 gridview 转换为图像并将其保存到 asp net 3 5 中的本地磁盘 我不知道该怎么做 任何人都可以建议一些东西 提前致谢 以下链接可能对您有帮助 将 DataGridView 转换为位图 使用 Reporting Ser
  • 点击时设置 PHP cookie

    所以我宁愿不使用 JS jQuery 但我似乎无法让它工作 我有一个链接 a href hideupdates hide Hide Updates a 我正在尝试用它来设置 cookie if GET hideupdates hide se
  • 将新值写入数组

    这是我的代码片段 typedef float point2 2 point2 a 90 90 point2 b 90 90 point2 c 90 90 point2 d 90 90 glBegin GL POLYGON glVertex2
  • SQL Developer 不显示 dbms_output

    我正在尝试在 SQL Developer 中编写 PL SQL 代码 但它没有显示输出 我的程序编译成功 这是代码 set serveroutput on declare begin dbms output put line Hi end
  • 使用条件 ?:(三元)运算符的好处

    与标准 if else 语句相比 运算符有哪些优点和缺点 显而易见的是 条件 运算符 处理直接值比较和赋值时更短 更简洁 似乎不像 if else 结构那么灵活 标准如果 否则 可以应用到更多的情况 比如函数调用 通常是不必要的长 每个语句
  • 如何使用 DotNetOpenAuth 检索 google 个人资料?

    我正在尝试使用 DNOA 为我的应用程序提供 OpenId 支持 以便离开我迄今为止一直使用的 Janrain 解决方案 问题是 到目前为止 我拥有的用户拥有基于个人资料的标识符 https www google com profiles
  • 从互联网下载 HTML 后字符串中的字符发生变化

    使用以下代码 我可以从互联网下载文件的 HTML WebClient wc new WebClient string downloadedFile wc DownloadString http www myurl com 但是 有时该文件包
  • Web API 版本控制配置

    我是Mvc新手 尝试编写restful api 我使用Web api类型的应用程序 并尝试创建版本控制 最后我想要像 api v1 values get api v2 values get 这样的链接类型 我尝试在控制器文件夹中创建文件夹