C# 如何在Web API中用空格传递url参数

C# 如何在Web API中用空格传递url参数,c#,asp.net-web-api,C#,Asp.net Web Api,我已经为我的应用程序使用ASP.NETWebAPI开发了web服务。查找从WEP API访问数据的代码 namespace ProjectTrackingServices.Controllers { [EnableCors(origins: "*", headers: "*", methods: "*")] public class PTEmployeesController : ApiController { [Route("api/ptemployees/{name:

我已经为我的应用程序使用ASP.NETWebAPI开发了web服务。查找从WEP API访问数据的代码

namespace ProjectTrackingServices.Controllers
{
   [EnableCors(origins: "*", headers: "*", methods: "*")]
    public class PTEmployeesController : ApiController
    {
 [Route("api/ptemployees/{name:alpha}")]
        public HttpResponseMessage Get(string name)
        {
            var employees = EmployeesRepository.SearchEmployeesByName(name);
            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, employees);
            return response;
        }
    }
}
  • 我可以使用姓名过滤特定员工数据,姓名字符串中没有空格。 例如:网址:

  • 当我尝试按url筛选全名为[有空格]的员工时 例如:网址:“马库斯” 错误将返回 “网络错误:400错误请求-


  • 因此,任何人都可以帮助如何在WEP API中使用空格传递url参数并返回成功状态。

    调用您的API的人应该确保他们按照http规范对url参数进行编码。如果调用方使用.net,则所有url参数都应通过静态方法传递。在上述情况下,这将把url变成


    调用API时,由于它现在符合HTTP协议,WEB API将知道如何使用适当的空格对其进行解码。

    调用API的人应确保他们按照HTTP规范对URL参数进行编码。如果调用方使用.net,则所有url参数都应通过静态方法传递。在上述情况下,这将把url变成


    调用API时,由于它现在符合HTTP协议,WEB API将知道如何使用适当的空格对其进行解码。

    问题在于路由中的constriant属性:

    [Route("api/ptemployees/{name:alpha}")]
    
    alpha
    约束要求所有字符都是字母字符,不包括空格。您需要删除或更改约束(如果要更改约束,最简单的方法是使用
    regex
    约束)

    发件人:

    alpha匹配大写或小写拉丁字母字符(a-z,a-z)


    问题在于路由中的属性constriant:

    [Route("api/ptemployees/{name:alpha}")]
    
    alpha
    约束要求所有字符都是字母字符,不包括空格。您需要删除或更改约束(如果要更改约束,最简单的方法是使用
    regex
    约束)

    发件人:

    alpha匹配大写或小写拉丁字母字符(a-z,a-z)


    在API映射中,您提到了{name:alpha},所以alpha不包含空格,所以请更改URL映射,然后尝试itDharmesh,是的。更改url映射时,它正在工作fine@Dharmesh无论您认为您的评论是简单的还是显而易见的,您都应该包含一个带有taht信息的答案,以明确这个Q有一个A,因此这对于您提到的API映射中的其他人非常有用{name:alpha}所以alpha不包含空格,所以请更改URL映射,然后尝试itDharmesh,是的。更改url映射时,它正在工作fine@Dharmesh无论你认为你的评论是简单的还是显而易见的,你都应该包括一个带有taht信息的答案,以明确这个Q有一个A,这样对其他人很有用答案已经在评论中了。我问那个发表评论的人,让科夫纳把它变成一个答案,但是,由于他没有回答,我自己也这么做了。URL编码在这种情况下不是问题。答案已经在一条评论中了。我问那个发表评论的人,让科夫纳把它变成一个答案,但是,由于他没有回答,我自己也这么做了。在这种情况下,URL编码不是问题。