WEB Api

ASP.NET
  1. 4 года назад

    Классно что открыли форум! Я регулярный посетитель вашего сайта! Он супер!
    У меня один вопрос, я вообще не врубаюсь в Web Api. ... Можно простой пример, я хочу отправить на страницу например id=1 а в ответ получить "Один".
    То есть пример попроще, без использования классов и тд. Буду очень благодарен! Спасибо!

  2. Alexandr_Erohin

    May 23 Администратор
    Добавлено 4 года назад Alexandr_Erohin

    Найти это сообщение rsotun я хочу отправить на страницу например id=1 а в ответ получить "Один".

    Web API используется для взаимодействия с веб-службами, а не со страницами приложения ASP.NET, при этом использует такую же архитектуру как и ASP .NET MVC (с классами контроллеров, маршрутизацией но без представлений), т.е. является хорошей альтернативой WCF и веб-службам ASMX, для разрабов которые привыкли работать с ASP .NET MVC. Правильнее было бы задать вопрос я хочу отправить веб-службе например id=1 а в ответ получить "Один".

    public class WebController : ApiController
    {
           [HttpPost]
            public string GetNumber(int id = 1)
            {
                switch (id)
                {
                    case 1:
                        return "Один";
                    case 2:
                        return "Два";
                    default:
                        return id.ToString();
                }
            }
    }

    Когда веб-служба будет запущена, доступ к данным можно будет получить с помощью POST-запроса

    <адрес сервера>/api/WebController/GetNumber

    С помощью Web API можно будет настроить заголовок ответа, например если служба вызывается из Ajax-запроса, можно установить заголовок JSON, если вызывается из WPF то можно установить XML.

  3. Спасибо Александр! Я просто не очень знаком с контролерами и т.д. Попробую ваш пример.
    Дело в том что я сделал плагин для онлайн игры, он отправляет имя пользователя методом webrequest на страницу aspx на этой странице я беру имя пользователя и заношу в базу данных, а обратно мне надо передать кол-во всех пользователей. А сейчас консоль игры в ответ получает код всей страницы целиком.
    Только у меня вопрос, этот контролер можно добавить в обычный asp.net проект? (не mvc) Или нужно создавать отдельный проект?

  4. Че то я запутался ..метод POST ....ммм. Щас с игры я передаю вот такую строку адрессайта/user.aspx?name=имяпользователя
    В ответ игра получает код всей страницы , а мне нужно вернуть определенное значение.... Ваш пример по моей теме?

  5. Alexandr_Erohin

    May 25 Администратор
    Добавлено 4 года назад Alexandr_Erohin

    Найти это сообщение rsotun Щас с игры я передаю вот такую строку адрессайта/user.aspx?name=имяпользователя

    Это запрос типа GET по URL, а не POST

    Найти это сообщение rsotun В ответ игра получает код всей страницы

    Неправильный URL, веб-служба никогда не возвращает код страницы, я отписал выше что URL к контроллеру Web API осуществляется по шаблону маршрутизации /api/<имя контроллера>/<имя метода действия>

    Я просто не очень знаком с контролерами и т.д.

    Смысл тогда использовать Web API. Веб-службы ASMX по проще будут.

  6. Алекс нихрена непонятно ..
    В итоге в моем случае использовать ASMX?

  7. Так, я вроде разобрался с web api , но он возвращает в виде xml. А как мне вернуть просто строку а не XML?
    И пока не понимаю как его прикрутить к готовому сайту, щас я создал отдельный проект WEB API

  8. 3 года назад

    rsotun - Если возвращает xml, то видимо Вы имели ввиду ASMX Web-services?
    Переходите на Web Api - это более современный, гибки и менее напряжный подход. ASMX дубовые.

    Я бы не рекомендовал возвращать просто строки, используйте json. Чтобы хоть какая-нибудь структура у возвращаемых данных была.
    Чтобы возвернуть json можно просто написать

    // GET api/values/5
            public JsonResult Get(int id)
            {
                return new JsonResult()
                {
                    Data = new {id = 5}
                };
            }

    Чтобы вернуть строчку, можно просто:

    // GET api/values/5
            public string Get(int id)
            {
                return "5";
            }

или зарегистрируйтесь чтобы ответить