как использовать параметр get as method в web api - PullRequest
0 голосов
/ 09 апреля 2020

для использования параметров строки запроса в postman для получения отдельных данных. Я хочу использовать метод get в качестве параметра, когда я пытаюсь опубликовать этот тест. c HttpResponseMessage test (int id) показывает ошибку, что

Не найден ресурс HTTP, который соответствует URI запроса 'http://localhost: 53720 / api / test / 1 '.

Тип не был найдено, что соответствует контроллеру с именем 'test'.

код:

   public class DefaultController: ApiController {
    public object Conn { get; private set;}

    [Route("api/test/id")]
    [HttpGet]
    public HttpResponseMessage test(int id) {
     DataSet ds = new DataSet();
     string conname = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
     SqlConnection conn = new SqlConnection(conname);
     conn.Open();
     SqlCommand cmd = new SqlCommand("select *from Employees", conn);
     SqlDataAdapter sda = new SqlDataAdapter(cmd);
     sda.Fill(ds);
     return new HttpResponseMessage {
      Content = new StringContent(JsonConvert.SerializeObject(ds), Encoding.UTF8, "application/json")
     };
    }
   } 

1 Ответ

1 голос
/ 09 апреля 2020

Ваш id является переменным параметром в вашем маршруте, и ваш маршрут не выглядит правильным. Попробуйте с {} вокруг id. Как показано ниже.

[Route("api/test/{id}")] // <===== notice that id is in {}
[HttpGet]
public HttpResponseMessage test(int id)

Вы также можете использовать ограничения маршрута, если вы хотите ограничить соответствие параметров в шаблоне маршрута. Общий синтаксис {parameter:constraint}

Так что в вашем случае это будет что-то вроде:

[Route("api/test/{id:int}")]

Смотрите здесь для получения более подробной информации

...