2017-01-17 6 views
0

Я очень новичок в веб-разработке, но я хотел создать веб-приложение api для существующего приложения Windows Service, которое я создал для работы.Как сделать HTTP-запрос GET самообслуживаемому API OWIN?

Моя цель прямо сейчас заключается в создании простого веб-приложения, состоящего из полей ввода текста, в которых кто-то может ввести свой адрес электронной почты и подписаться на список рассылки.

я указал в направлении использования Owin для самостоятельного хозяина веб апи в моем существующем проекте, так что я смотрел на это руководство, чтобы начать:

https://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api

Это руководство показывает консоль приложения призванию и отображение API, но я хотел сделать то же самое из веб-приложения. Поэтому я попытался сделать то, что сделано здесь, в руководстве 'Getting Started with ASP.NET Web Api 2', используя консольное приложение с OWIN.

Когда я начинаю консольное приложение, я могу войти http://localhost:8080/api/values/1 и я получаю <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">value</string> Что я предполагаю, что означает, что веб-сервер работает и отвечает на запрос, чтобы получить мое строковое значение, что я возвращаюсь из моего ValuesController.

Однако я пытался создать простую веб-страницу, которая вызывает API, чтобы получить value, но я не смог понять это.

Сейчас мой index.html имеет следующие в теле:

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script> 
<script> 
    var uri = "http://localhost:8080/api/values/1"; 

    $(document).ready(function() { 
     $.getJSON(uri) 
     .done(function (data) { 
      $('#value').text("done"); 
     }) 
     .fail(function (jqXHR, textStatus, err) { 
      $('#value').text('Error: ' + err); 
     }); 

    }); 
</script> 

И я просто получить Error: напечатанный на этой странице. Снова я новичок в работе над технологиями, связанными с веб-технологиями, поэтому любое руководство будет высоко оценено.

+0

Что говорят разработчики? Они могут быть очень полезны при отладке! Кроме того, если вы используете хром, вы можете поставить точку останова в javascript и посмотреть, что такое объекты jqxhr и textStatus. На данный момент вы просто выбросите их, они могут быть полезны! –

+0

Кроме того, инструмент postman, как автономное приложение, так и хром-плагин, очень полезен для тестирования конечных точек api. Возможно, стоит убедиться, что ваш api работает с почтальоном, а затем работает над javascript. Нет смысла путаться, если ваш api не работает! –

+0

Привет, Крис, спасибо за комментарий. Я пытаюсь пройтись по этим инструментам еще! Я использовал плагин Postman chrome и отправил GET с http: // localhost: 8080/api/values ​​/ 1 и «значение» появилось в теле, которое, я думаю, означает, что api работал. – riyu

ответ

0

Итак, после обсуждения комментариев (помогая вам отлаживать приложение). Политика безопасности кросс-начального уровня в браузерах ограничивает веб-страницы от вызова источника данных, который существует в другом домене. Домен - это либо другой URL-адрес, либо другой порт на том же URL-адресе.

http://localhost:80

является другой URL/Домен:

http://localhost:81

Есть два решения для этого, либо использовать JSONP, или CORS, чтобы сделать запрос на api, JSONP в основном завершает ваши json-данные в вызове функции. Когда вызов api возвращается, он выполняет вызов обратного вызова/функции, минуя ограничение безопасности. Однако для поддержки JSONP и CORS требуется поддержка сервера, которая приносит решение 2 ...

Закажите веб-страницу, которую вы пытаетесь использовать из API, что означает, что вы ее используете на сервере из того же домена, следовательно, нет проблем между доменами !!

Рад, что вы отсортированы, я знаю, что это может расстраивать веб-звонки.

 Смежные вопросы

  • Нет связанных вопросов^_^