当前位置: 首页 > 知识库问答 >
问题:

Web API 2 中带连字符的参数

伯君浩
2023-03-14

我希望遵循正确的URL约定并使用连字符作为单词分隔符:<code>/api/books?作者id=3

但C#中不支持带连字符的属性名。在.NET Framework 4.8中,如何将AuthorId绑定到作者id

例如,请考虑以下 URL:/api/books?authorid=3

它映射到下面的方法。

[RoutePrefix("api/books")]
public class BooksController
{
    [HttpGet]
    public async Task<IHttpActionResult> GetBooks([FromUri] GetBooksParameters getBooksParameters)
    {
        var authorId = getBooksParameters.AuthorId;
        // ...
    }
}

public class GetBooksParameters
{
    public int? AuthorId { get; set; }
}

共有1个答案

闻人修明
2023-03-14

请尝试使用url..../api/books?作者id=3

 [HttpGet]
    public async Task<IHttpActionResult> GetBooks()
    {
       var parameters = GetBooksParameters(HttpContext);
    // ...
   }

    [NonAction]
    private BooksParameters GetBooksParameters(HttpContext httpContext)
    {
        var parameters = new BooksParameters();

        var queryString = httpContext.Request.QueryString.Value;

        foreach (string item in queryString.Split('&'))
        {
            string[] parts = item.Replace("?", "").Split('=');

            switch (parts[0])
            {
                case "author-id":
                    parameters.AuthorId = Convert.ToInt32(parts[1]);
                    break;
                case "book-id":
                    parameters.BookId = Convert.ToInt32(parts[1]);
                    break;

                default:
                    break;
            }
        }
        return parameters;
    }

因素

 public class BooksParameters
 {
        public int? AuthorId { get; set; }
        public int? BookId { get; set; }
 }
 类似资料:
  • 本文向大家介绍MySQL查询删除带数字的VARCHAR字符串中的连字符后的数字,包括了MySQL查询删除带数字的VARCHAR字符串中的连字符后的数字的使用技巧和注意事项,需要的朋友参考一下 为此,请使用SUBSTRING_INDEX()。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 这是删除连字符后的数字的查询- 让我们再

  • 问题内容: 我想将Json的压缩gzip上传到Google Storage。 我有以下代码: 该是返回的Json换行符分隔的功能。 运行此代码将给出: 在Python文档说,格式是:我不知道我把它理解为不存在如何使用它的例子。 我也尝试过 这给出了: 我正在运行Python 3.5 问题答案: 您没有正确使用该功能。检查一下: 你可以试试: 是该函数的参数,而您正在该函数之外使用它。

  • 问题内容: 假设您正在为BarBaz Incorporated开发项目的核心模块。您的代码片段可能如下所示: 如果您的公司网站不是,而是惯例,那会是什么样的惯例? 问题答案: SUN时代的Java语言规范给出了建议的约定: 如果域名包含连字符或标识符中不允许的任何其他特殊字符(第3.8节),请将其转换为下划线。 但这只是一个建议…

  • 假设我的Solity智能合约中有以下事件: 我正在尝试在web3j Java库中构造相应的事件。这就是我所做的: 但是,这给了我一个错误: 我应该使用哪种类型来代替< code>String?

  • 我有一个POST请求调用到我的应用程序与内容类型:应用程序/x-WW-form-urlencoded。 表单数据有效负载为:用户名=myname@gmail.com 我需要将这两个参数映射到一个Java对象: 我的控制器是: 我看到用户名正在填充,但myToken没有。 我不能使用@JsonProperty(“我的令牌”),因为它不是json,还能做些什么来获得令牌?

  • 问题内容: 假设我有一个非常长的字符串,其中包含要创建的参数。我知道您可以使用创建多行字符串 但是现在让我说我想传递1、2和3作为参数。 这有效 但是,如果我有一个包含30个以上参数的超长字符串,那么如何在多行中传递这些参数呢?在单行中传递它们会破坏甚至尝试创建多行字符串的目的。 预先感谢任何人的帮助和见识。 问题答案: 您可能会滥用括号和逗号的行连续属性。