我想在我的Web API URL上进行搜索,如下:
http://localhost:8000/api/trips/World Trip/stops
在这种情况下,“World Trip”是一个词。但是当调用到达服务器时,它会以以下方式到达: "
World%20Trip
" 是用 %20
来替换空格的代码!是否有必要进行某些设置来防止使用代码替换空格?我记得在以前的版本中有
<httpRuntime relaxedUrlToFileSystemMapping="true" />
。我不想在服务器内部使用任何转换方法:比如
HttpServerUtility.UrlEncode()
。我的数据注释路由:
[Route("api/trips/{tripName}/stops")]
我的 StopController.cs
using AutoMapper;
using Microsoft.AspNet.Mvc;
using Microsoft.Framework.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using TheWorld.Models;
using TheWorld.ViewModels;
namespace TheWorld.Controllers.Api
{
[Route("api/trips/{tripName}/stops")]
public class StopController : Controller
{
private ILogger<StopController> _logger;
private IWorldRepository _repository;
public StopController(IWorldRepository repository, ILogger<StopController> logger)
{
_repository = repository;
_logger = logger;
}
[HttpGet("")]
public JsonResult Get(string tripName)
{
try
{
var results = _repository.GetTripByName(tripName);
if (results == null)
{
return Json(null);
}
return Json(Mapper.Map<IEnumerable<StopViewModel>>(results.Stops.OrderBy(s => s.Order)));
}
catch (Exception ex)
{
_logger.LogError($"Failed to get stops for trip {tripName}", ex);
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return Json("Error occurred finding trip name");
}
}
}
}