Работает в веб-сервисе api restful.Web API Restful Service C# Выполнять SQL-запрос
У меня есть таблица под названием тесты. Первичный ключ - автоинкремент. Каждая строка содержит имя пользователя и тестовый вопрос. Эта БД на самом деле не оптимизирована, но это не обязательно.
Поскольку первичный ключ - это просто int, чтобы каждая строка была уникальной, существует много строк с повторяющимися именами пользователей. Это отлично.
Я хочу, чтобы иметь возможность возвращать все строки с совпадающим именем пользователя.
Я хочу, чтобы иметь возможность сделать это с помощью запроса GET с URL: 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);
}
Сообщите мне, где я прищурился. Я пробовал это часами. Я не претендую на то, чтобы быть особенно хорош в этом.
Я бы второй ФВ подход. Код из OP открыт для атаки SQL-инъекции. Вы никогда не должны доверять входам, и определенно не при отправке их в SQL-запрос. – heartlandcoder
Он никогда не ударит этот метод с помощью www.mywebsite.com/api/tests/{username}, если он не изменит привязки по умолчанию. RouteConfig необходимо обновить, если он хочет использовать эту схему URL для доступа к этому методу. – RizJa
То правда, я предположил, что он имел право конфигурации для своего класса '[RoutePrefix ("API")] класс HisController общественности: ApiController {[HttpGet] HttpResponseMessage тест общественности (имя строки) {...}}' – Rafa