2017-01-17 23 views
0

私はWeb開発の新機能ですが、仕事用に作成した既存のWindowsサービスアプリケーションのWeb APIを作成したいと考えていました。OWIN自己ホスト型APIへのHTTP GETリクエストを作成するにはどうすればよいですか?

私の目標は、誰かが自分のメールアドレスを入力してメーリングリストに登録できるテキスト入力フィールドからなる単純なウェブアプリケーションを作成することです。

私は私が始めるために、このガイドを見て、私の既存のプロジェクトでのWeb APIを自己ホストにOWINを使用しての方向に向けられた。

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

このガイドでは、コンソールアプリケーションの呼び出しを示していAPIを表示していましたが、私は同じことをWebアプリからやりたかったのです。だから私はここで達成しようとしたのは、 '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>と入力すると、Webサーバーが実行されていると判断し、ValuesControllerから返される文字列値を取得する要求に応答します。

しかし、私はAPIを呼び出してvalueを取得する簡単なWebページを作成しようとしていましたが、それを把握することはできませんでした。

<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:は、ページに印刷されます:

今、私のindex.htmlは、体内で、次があります。再び私はWeb関連の技術に取り組んでいないので、どんな指針も高く評価されます。

+0

デベロッパーツールとは何ですか?デバッグ時に役立ちます!また、クロムを使用している場合は、JavaScriptにブレークポイントを設定し、jqxhrオブジェクトとtextStatusオブジェクトが何であるかを確認できます。あなたがただそれらを投げ捨てる瞬間、彼らは役に立つかもしれません! –

+0

また、スタンドアロンアプリまたはクロムプラグインのいずれかのポストマンツールは、APIのエンドポイントをテストするのに非常に便利です。apmanがpostmanを使用していることを確認してから、javascriptで作業する価値があります。あなたのAPIが動作していない場合、混乱することはありません! –

+0

こんにちはクリス、コメントありがとう。私はまだこれらのツールを通って私の道をナビゲートしようとしている! 私はPostmanクロムプラグインを使って、http:// localhost:8080/api/values/1でGETを送信しました。 と、値が表示されていました。 – riyu

答えて

0

これで、コメントの説明に従います(アプリのデバッグに役立ちます)。 ブラウザのクロスオリジンセキュリティポリシーは、Webページが別のドメインに存在するデータソースを呼び出すことを制限します。ドメインは異なるURLか、同じURLの別のポートです。

http://localhost:80

異なるURL /ドメインである:どちらか、これには2つのソリューションがあります

http://localhost:81

作るためにJSONP、またはCORSを利用JSONPは基本的に関数呼び出しでjsonデータをラップします。 api呼び出しが戻ると、セキュリティ制限をバイパスしてコールバック/関数呼び出しを実行します。 しかし、JSONPとCORSの両方がソリューション2を提供するサーバーサポートを必要とします...

APIから使用しようとしているWebページを提供します。つまり、同じドメインのサーバーであるためドメイン間の問題は発生しません!!

喜んでそれを並べ替えることができます。私はそれがウェブ通話でイライラする可能性があることを知っています。

関連する問題