Estudié cómo utilizar la Api en un proyecto de MVC, pero tengo algunas dudas acerca de. (Estoy escribiendo en lenguaje C#, antes de que alguien pregunta).

Hasta ahora, sé que el Api de rutas de configuración se establece en el WebApiConfig clase y por defecto la ruta es:

routeTemplate: "api/{controller}/{id}"

Al hacer esto, al compilar una petición jSon sé qué URI tengo que llamar para obtener un resultado específico.

Pero me gustaría ser más específico, así que he modificado la Api de ruta:

routeTemplate: "api/{controller}/{action}/{id}"

Con esta ruta que voy a ser capaz de construir un URI directamente a una acción específica (método?) dentro de mi ApiController.

También me enteré de que el /{controller}/, mientras que la construcción de la URI con jSon, es el nombre de la clase. Es decir, si la clase es ProductsController el nombre del controlador que tengo que usar para construir el URI es sólo /products. (De modo que toda la dirección URL será /api/products).

Aquí las preguntas son:

Si tengo un ApiController clase denominada simplemente Products, es reconocible como parte de un URI? O el ApiController de la clase termina con la «Controlador»?

Siguiendo un tutorial que puse mi ApiController il la misma carpeta que los demás Controladores. Sé que es posible poner Api en diferentes carpetas. Así, es cada API reconoce automáticamente el MVC? Quiero decir, donde me salve, son reconocidos como API?

Si es así, podría eventualmente llamar a una API encuentra en un proyecto diferente que la que estoy trabajando?

Puedo crear un único proyecto (como la biblioteca de clase) con una colección de APIs?

Hace la ruta de cambio de configuración si quiero llamar a una API en una distinta proyecto?

  • su una solicitud HTTP, JSON sólo es relevante si la solicitud ha de contenido o un encabezado Aceptar.
  • ¿tu realmente quieres una URI como api/Product/Get/1 ? No debería el verbo de la solicitud HTTP para definir la acción?
  • Él no dice que él quiere tener una acción llamada Conseguir. La acción podría ser todo tipo de cosas por ejemplo, api/Products/o Resumen de la api/Productos/Detalles
  • Entiendo lo que quieres llegar, pero ¿no es una corrupción de DESCANSO? asp.net/web-api/overview/web-api-routing-and-actions/…
  • Tal vez, mi ejemplo era mala, pero muchas buenas Api de tener algo más que operaciones CRUD en ellos. Ese es mi punto de verdad.
  • Yo estoy luchando para pensar de un recurso de acción de combinación que no puede usar un verbo HTTP como lo suficientemente cerca como sinónimo pero tal vez me falta imaginación.

InformationsquelleAutor krvl | 2013-09-13

2 Comentarios

  1. 6

    Oh, eso es un montón de preguntas… 🙂

    Para responder a ellos:

    Si tengo un ApiController clase denominada simplemente Productos, es reconocible como parte de un URI? O el ApiController de la clase termina con la «Controlador»?

    ASP.NET Enrutamiento de los usos que Coonvention, así que, que yo sepa, si el nombre de la clase como te gusta, no después de ese convenio, no serán reconocidos y usted será más probable que obtenga un mensaje de error 404. Así que para responder a tu pregunta, sí, el nombre tiene que terminar con Controller, a menos que anule el convenio por defecto (ver a Mike Goodwin respuesta).

    Siguiendo un tutorial que puse mi ApiController en la misma carpeta que los demás Controladores. Sé que es posible poner Api en diferentes carpetas. Así, es cada API reconoce automáticamente el MVC? Quiero decir, siempre me los guarde, son reconocidos como API?

    La carpeta no importa, ASP.NET se busca una clase que coincide con el nombre. La Api de Controladores son reconocidos como la API de controladores porque heredan de la base ApiController en lugar de la Controlador de uno

    Si es así, podría eventualmente llamar a una API encuentra en un proyecto diferente que la que estoy trabajando? Puedo crear un único proyecto (como la biblioteca de clase) con una colección de APIs?
    ¿La ruta de cambio de configuración si quiero llamar a una API en una distinta proyecto?

    Este no es clara… ¿que significa «llamar» a una API? si la API está en otro proyecto que probablemente va a estar sentado en una dirección independiente… Todo lo que necesitas es dirigir su petición JSON a esa dirección, así que si usted está usando jQuery hacer esto:

    $.getJSON('http://other.server/api/Controller', function(data) { ... });

    lugar de simplemente esto:

    $.getJSON('/api/Controller', function(data) { ... });

    (Sólo ten cuidado de cross-site scripting problemas).

    Esperanza de que borra las cosas para usted. Siéntase libre de preguntar si algo desnt’ sentido…

  2. 3

    En ASP.Net MVC, usted puede tener control total sobre la ubicación del controlador y de la creación de instancias mediante la implementación de un controlador personalizado de fábrica.

    Esta es una clase que implementa la IControllerFactory de la interfaz. Esto proporciona métodos para seleccionar y crear instancias de controladores basados en la petición de entrada de contexto. También tiene métodos para otra controladora del ciclo de vida de los comportamientos.

    El nombre de convención sobre la base de los comportamientos que ven en la norma MVC son simplemente la lógica programada en el controlador por defecto de fábrica (que es de tipo DefaultControllerFactory curiosamente)

    Aquí es un ejemplo de cómo hacer un cliente controlador de fábrica:

    http://www.mgolchin.net/posts/18/dive-deep-into-mvc-icontrollerfactory

    Así que la respuesta a tu pregunta es sí, usted puede hacer lo que quiera, pero no, no es todo automático.

Dejar respuesta

Please enter your comment!
Please enter your name here