实现新方法后,我的 api 方法将无法运行
本文关键字:运行 方法 api 新方法 我的 实现 | 更新日期: 2023-09-27 17:56:49
public class ContactsController : ApiController
{
static readonly IContactsRepository repository = new ContactsRepository();
//
// GET: /Contacts/
public IEnumerable<Contact> GetAllContacts()
{
return repository.GetAll();
}
}
上面的代码适用于 API 调用/api/contacts/GetAllContacts,并从我的数据库中返回联系人列表。我还想添加一个使用/api/contacts/getcontacts 之类的东西返回特定联系人的方法?但是,一旦我添加了以下代码:
public Contacts GetContact(int id)
{
Contacts item = repository.Get(id);
if (item == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return item;
}
我的原始调用(/api/contacts/GetAllContact)将不起作用,并显示以下错误:
"Message": "The request is invalid.",
"MessageDetail": "The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'ReservationsAPI.Models.Contacts GetContact(Int32)' in 'ReservationsAPI.Controllers.ContactsController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter."
编辑:路由配置
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
删除您手动创建的 ContactS 类并尝试此操作;
public class ContactController : ApiController
{
static readonly IContactsRepository repository = new ContactsRepository();
// GET api/Contact
public IEnumerable<Contact> GetContact()
{
return repository.GetAll();
}
// GET api/Contact/5
public IHttpActionResult GetContact(int id)
{
var contact = repository.Get(id);
if (contact == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return contact;
}
然后尝试调用这些网址;
/api/Contact
/api/Contact/1
使用此设置,您无需在工艺路线中定义操作。