0
使用web api restful服務。Web API Restful Service C#執行SQL查詢
我有一張名爲測試的表。主鍵是自動遞增的。每行包含一個用戶名和一個測試問題。這個數據庫並沒有真正優化,但它不需要。
因爲主鍵只是一個int,以保持每行都是唯一的,所以有很多行有重複的用戶名。這可以。
我希望能夠用匹配用戶名返回所有行。
我希望能夠用URL中的GET請求來做到這一點:www.mywebsite.com/api/tests/{username}
在Visual Studio中的默認控制器方法只能通過搜索主鍵返回一個唯一的結果。
這就像我想要的東西,但它不起作用。 500錯誤。我對調試不熟悉,所以如果可能的話,請指向正確的方向,以便我可以提供更多信息。
// GET: api/Tests/robert
[ResponseType(typeof(Test))]
public async Task<IHttpActionResult> GetTest(string id)
{
//This is the default approach that just searches by primary key
//Test test = await db.Tests.FindAsync(id);
/*This is roughly what I want. Compiles, but doesn't work.*/
var query = "SELECT* WHERE id=" + id;
Test test = db.Tests.SqlQuery(query, id);
if (test == null)
{
return NotFound();
}
return Ok(test);
}
讓我知道我搞砸了。幾個小時以來,我一直在爲此感到失望。我不認爲在這方面特別優秀。
我會第二的EF方法。來自OP的代碼對SQL注入攻擊是開放的。當你將它們發送到SQL查詢中時,你絕不應該信任輸入,也絕對不能。 – heartlandcoder
他將永遠不會使用www.mywebsite.com/api/tests/{username}命中此方法,除非他更改了默認綁定。如果RouteConfig需要使用此URL模式訪問此方法,則需要更新RouteConfig。 – RizJa
那是真實的,我認爲他有正確的配置他的課'[RoutePrefix( 「API」) 公共類HisController:ApiController {[HTTPGET] 公共HttpResponseMessage測試(字符串名稱){...}}' – Rafa