从Postman调用时未执行API方法



我正在.NET框架中制作一个API。

我有一个名为Autos的控制器,API旨在允许注册和检索汽车模型。

起初,我能够使用GET从Postman获取List的IEnumerable实例。我得到了一个用伪数据制作的列表的序列化版本。

然而,在我删除了伪列表,将方法更改为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;
}

最新更新