進入到這個瀏覽器:爲什麼一些REST方法在其他幾乎完全相同的工作中失敗?
http://localhost:28642/api/SQLServerPOC/GetByStateOrProvince/California
我得到的,「沒有HTTP資源發現,請求URI‘http://localhost:28642/api/SQLServerPOC/GetByStateOrProvince/California
’相匹配。」
然而,其他REST方法非常相似,做工精細。這是我的意思。這裏的接口:
public interface ISQLServerPOCRepository
{
int GetCount();
SQLServerPOC GetByCustomerId(int ID);
SQLServerPOC GetByFullName(string FName, string MName, string LName);
IEnumerable<SQLServerPOC> GetByLastName(string LName);
IEnumerable<SQLServerPOC> GetByCountry(string CountryName);
IEnumerable<SQLServerPOC> GetByStateOrProvince(string StateOrProvince);
IEnumerable<SQLServerPOC> GetByPostalCode(string PostalCode);
IEnumerable<SQLServerPOC> GetAll();
SQLServerPOC Add(SQLServerPOC item);
}
所有這些方法的工作,但二:GetByStateOrProvince()和GetByFullName()
這裏是他們是如何出現在控制器和存儲庫(工作和非工作證明顯示沒有根本的差異):
控制器 - 前兩個工作,最後兩個別:
[Route("api/SQLServerPOC/GetByLastName/{LName}")]
public IEnumerable<SQLServerPOC> GetSQLServerPOCByLastName(string LName)
{
return _SQLServerPOCRepository.GetByLastName(LName);
}
[Route("api/SQLServerPOC/GetByZip/{PostalCode}")]
public IEnumerable<SQLServerPOC> GetSQLServerPOCByPostalCode(string PostalCode)
{
return _SQLServerPOCRepository.GetByPostalCode(PostalCode);
}
[Route("api/SQLServerPOC/GetByFullName/{FName}/{MName}/{LName}")]
public SQLServerPOC GetSQLServerPOCByFullName(string FName, string MName, string LName)
{
return _SQLServerPOCRepository.GetByFullName(FName, MName, LName);
}
[Route("api/SQLServerPOC/GetByStateOrProvince/{StateOrProvince}")]
public IEnumerable<SQLServerPOC> GetSQLServerPOCByStateOrProvince(string StateOrProv)
{
return _SQLServerPOCRepository.GetByStateOrProvince(StateOrProv);
}
庫
public IEnumerable<SQLServerPOC> GetByLastName(string LName)
{
return customerData.Where(c => c.LastName == LName);
}
public IEnumerable<SQLServerPOC> GetByPostalCode(string PostalCode)
{
return customerData.Where(c => c.PostalCode == PostalCode);
}
public SQLServerPOC GetByFullName(string FName, string MName, string LName)
{
return
customerData.Where(f => f.FirstName == FName)
.Where(m => m.MiddleName == MName).FirstOrDefault(l => l.LastName == LName);
}
public IEnumerable<SQLServerPOC> GetByStateOrProvince(string StateOrProvince)
{
return customerData.Where(c => c.StateProvince == StateOrProvince);
}
注意:對於 「GetByFullName()」 我輸入:
http://localhost:28642/api/SQLServerPOC/GetByFullName/Catherine/R./Abel
...但是從瀏覽器中犯錯是不同的,即:
資源無法找到。 描述:HTTP 404.您正在查找的資源(或其某個依賴項)可能已被刪除,名稱已更改或暫時不可用。請檢查以下網址並確保它拼寫正確。 請求的URL:/api/SQLServerPOC/GetByFullName/Catherine/R./Abel
我想嘗試的第一件事就是將StateOrProv重命名爲StateOrProvince,我有一種感覺,那些需要匹配 –
讓它成爲答案,我將它標記爲 - 它的工作原理! –