c# - 从 Postman 调用时未执行 API 方法
问题描述
我正在.NET Framework 中制作 API。
我有一个名为 Autos 的控制器,该 API 旨在允许注册和检索汽车模型。
起初,我能够使用 GETIEnumerable
从 Postman 获取 List 的实例。我得到了我用虚拟数据制作的列表的序列化版本。
但是,在我删除了虚拟列表、更改方法返回HttpResponseMessage
并切换到我将用作存储库的静态字典后,该方法在使用 Postman 调用它时停止执行。我添加了日志消息和断点,我可以看到它们永远不会执行。
我的控制器:
public class AutosController : ApiController
{
[HttpGet]
public HttpResponseMessage GetModels(HttpRequestMessage request)
{
//Theres a breakpoint here
System.Diagnostics.Debug.WriteLine(Repository.AutoRepository.Keys);
return request.CreateResponse<IEnumerable<Auto>>(HttpStatusCode.OK, Repository.AutoRepository.Values);
}
[HttpPost]
public HttpResponseMessage SetModel(HttpRequestMessage request, Auto serializedAuto)
{
if (serializedAuto.IsValid())
{
if (Repository.AddToRepository(serializedAuto))
return request.CreateResponse<Auto>(HttpStatusCode.Created, Repository.AutoRepository[serializedAuto.Id]);
else
return request.CreateResponse(HttpStatusCode.BadRequest);
} else
{
return request.CreateResponse(HttpStatusCode.BadRequest);
}
}
}
还有我的 API 路线
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/v1/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
我可以成功使用 SetModel 并且可以确认发送的模型也已添加到存储库中。我也可以将它退回给邮递员。
我用于 GET 的邮递员地址是
localhost:51020/api/v1/GetModels
解决方案
在我看来,你的行动可能是
[Route("~/api/v1/GetModels")]
public IEnumerable<Auto> GetModels()
{
var values = Repository.AutoRepository.Values;
if (values==null) throw new HttpException(404, "Some description");
return values;
}
推荐阅读
- r - 根据反应列定义一个新变量
- postgresql - PostgreSQL:无索引、临时表的大型插入的性能
- java - 尝试强制转换浮点变量时出现奇怪的 C# 行为(与 Java 相比)
- python-3.x - 从 winreg.QueryInfoKey 获取时间组件
- python - 使用python将一个csv文件的内容添加到另一个文件
- c# - 将所有 string[] 转换为 int[] 并消除错误消息
- terraform - Terraform:错误查找:参数 1 应该是类型映射,得到类型字符串:
- django - 是否可以使用 URL 参数登录用户?(DJANGO)
- python-3.6 - 简单的 Salesforce 查询_更多永无止境
- php - 是php-mysql:根据涉及PHP变量的条件更新具有不同值的列