2012-07-06 2 views
0

Je conçois un ensemble d'API qui ne nécessite pas la fonctionnalité CRUD habituelle. Je n'ai besoin que de fournir des données aux clients, ce qui implique l'application de différents filtres aux données extraites de ma base de données principale. Par exemple, actuellement je l'API suivante:Pour mon scénario, je ne comprends pas comment je peux tirer parti de l'API Web

Service.asmx/GetEvents 

qui a la signature suivante:

public CustomObject GetEvents(string Location = "", string Company = "", string PersonType = "", string FromDate = "", string ToDate = "") 
{ 
    .... 
} 

Si tout mon API regarde un peu comme cela, comment dois-je utiliser l'API Web MVC4? J'utilise actuellement AVC4 pour le reste de mon projet et les services Web juste pour exposer l'API et je suis sûr que c'est une mauvaise façon de faire les choses. Je suis content de mon service actuel, mais j'ai vu plusieurs messages éparpillés autour de SO et de la blogosphère que l'API Web est la voie à suivre parce que c'est l'avenir. Aucune suggestion?

+0

Voulez-vous dire API Web avec Microsoft MVC4? – EkoostikMartin

+0

@EkoostikMartin: Oui. Edited ma question. Je vous remercie. – Legend

+0

Autant que je sache, l'API web asp.net fonctionnera de manière similaire à un contrôleur dans asp.net mvc où chaque méthode représente un appel. La raison principale pour laquelle vous utiliseriez l'API web est d'accepter différents types d'entrée et de renvoyer différents types de réponses (ex: la même méthode peut renvoyer json/xml/customter pour lequel vous avez créé un sérialiseur) – Shelakel

Répondre

1

Vous écrivez un contrôleur qui dérive de ApiController et expose une action. Vous pouvez également encapsuler votre logique de filtrage dans un modèle:

public class Filter 
{ 
    public string Location { get; set; } 
    public string Company { get; set; } 
    public string PersonType { get; set; } 
    public string FromDate { get; set; } 
    public string ToDate { get; set; } 
} 

et le contrôleur:

public EventsController: ApiController 
{ 
    public CustomObject Get(Filter filter) 
    { 
     ... 
    } 
} 

Maintenant, en supposant que les routes par défaut, votre API est prêt à la consommation à /api/events.

Si vous voulez en savoir plus sur l'API Web Je vous suggère de commencer sur le site officiel: http://www.asp.net/web-api

Questions connexes