Ошибка в моем вызове Web Api 2 — GET возвращает 404

Я пишу метод веб-API 2, чтобы получить все кредитные карты, основанные на том, что кто-то является студентом. Я написал новый контроллер веб-API 2, но когда я использую POSTMAN, я всегда получаю 404.

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using CrazyCards.Web.Interfaces;

namespace CrazyCards.Web.Areas
{
    public class CreditCardController : ApiController
    {

        private readonly ICreditCardDb _creditCardDb;
        private readonly ICustomerDb _customerDb;

        public CreditCardController(ICreditCardDb creditCardDb, ICustomerDb customerDb)
        {
            _creditCardDb = creditCardDb;
            _customerDb = customerDb;
        }

        [HttpGet]
        [Route("test")]
        public IEnumerable<string> Test()
        {
            return new List<string>();
        }

        [HttpGet]
        [Route("student/{customerId}")]
        public HttpResponseMessage GetStudentCreditCards(int customerId)
        {
            var customer =
                  _customerDb.Customers.FirstOrDefault(x => x.Id == customerId);

            if (customer != null && customer.EmploymentStatus == "Student")
            {
                var creditCards = _creditCardDb.CreditCards.Where(x => x.CardName == "Student");
                return Request.CreateResponse(HttpStatusCode.OK, creditCards, Configuration.Formatters.JsonFormatter);
            }

                return Request.CreateResponse(HttpStatusCode.OK, new ArrayList(), Configuration.Formatters.JsonFormatter); 
        }  
    }
}

Это мой локальный URL-адрес: http://localhost:30046/api/creditcard/student/1< /а>

И скриншот почтальона

введите здесь описание изображения


person nick gowdy    schedule 17.01.2016    source источник


Ответы (1)


Если я что-то не упустил, URL-адрес вашей карты GetStudentCreditCards будет http://localhost:30046/student/. {customerId} (сопоставляется через атрибут [Route("student/{customerId}")]).

Если у вас также включена обычная маршрутизация, вы, вероятно, также найдете ее по адресу http://localhost:30046/api/creditcard/?customerId={customerId} (например, http://localhost:30046/api/creditcard/?customerId=1 )

person Joachim Løvf    schedule 18.01.2016