2014-06-12 12 views
0

Je souhaite séparer mon API, qui interroge essentiellement les tables Azure et renvoie les objets représentant les entrées de la table Azure, à partir de la page Web qui appelle l'API lors des clics sur les boutons. Fondamentalement, je veux que les deux choses soient sur des serveurs séparés. Je n'ai aucune expérience en la matière, aucune idée de comment aborder cela? Est-ce que je me trompe conceptuellement quelque part ici?Comment appeler une API sur un serveur à partir d'une interface utilisateur (page Web) sur un serveur différent?

Tout comme un exemple, disons que l'API est sur un serveur « foreignserver » a une fonction:

public string double(string x) 
{ 
    return x + x + "."; 
} 

et je veux appeler cette fonction de mon localhost sur un bouton page asp.net clic:

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> 

codebehind:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    string y = //Connect to other server and call API? ; 
} 

Juste pour clarifier, je suis en train de découpler essentiellement le front-end de l'API en mettant chacun sur des serveurs séparés.

+0

Quelle est votre API (sur foreignserver) avec laquelle vous appelez construit? API Web? WCF? Douane? – mason

+0

Il s'agit d'une API REST qui dispose essentiellement de fonctions qui renvoient des valeurs à partir d'une table de stockage Azure. – SKLAK

Répondre

1

Je suis fondamentalement en train de découpler la partie avant de l'API en mettant chacun sur des serveurs distincts

On dirait un concept raisonnable pour moi, il y a des tonnes de raisons pour lesquelles cela est une bonne idée Comme si vous aviez l'intention d'ouvrir votre API pour un usage public ou de la partager sur plusieurs sites.

Afin de faire ce que vous faites, il vous suffit de faire une demande Web de votre site Web à votre API par exemple.

protected void Button1_Click(object sender, EventArgs e) 
{ 
    using (var request = WebRequest.Create("http://foreignserver/api/...")) 
    using (var response = request.GetResponse()) 
    using (var reader = new StreamReader(response.GetResponseStream()) 
    { 
     string y = reader.ReadToEnd(); 
     ... 
    } 
} 
+0

Le "/ ..." serait ce que dans l'exemple que j'ai fourni? Puis-je appeler directement cette fonction et obtenir la chaîne qu'elle renvoie? – SKLAK

+1

@SKLAK '/ ...' serait le chemin de votre appel d'API. Si vous n'avez pas encore d'API ou que vous ne savez pas comment en créer un, je vous recommande [MVC Web API] (http://www.asp.net/web-api). – James

+0

peut la vue être séparée à un serveur de diff pour une API Web MVC? – SKLAK

0

Essayez quelque chose ilke ceci:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    string y = new WebClient.DownloadString("http://example.com/api/Double?x=5"); 
} 

De toute évidence, vous aurez besoin d'utiliser l'adresse correcte.

Questions connexes