Saltar al contenido

¿Por qué “No se encontró ningún recurso HTTP que coincida con el URI de la solicitud” aquí?

Hacemos una verificación completa cada uno de los posts en nuestra web con la meta de mostrarte siempre la información más veraz y certera.

Solución:

Sus problemas no tienen nada que ver con POST/GET, sino solo con la forma en que especifica los parámetros en RouteAttribute. Para garantizar esto, agregué soporte para ambos verbos en mis ejemplos.

Volvamos a dos ejemplos de trabajo muy simples.

[Route("api/deliveryitems/anyString")]
[HttpGet, HttpPost]
public HttpResponseMessage GetDeliveryItemsOne(string anyString)

    return Request.CreateResponse(HttpStatusCode.OK, anyString);

Y

[Route("api/deliveryitems")]
[HttpGet, HttpPost]
public HttpResponseMessage GetDeliveryItemsTwo(string anyString = "default")

    return Request.CreateResponse(HttpStatusCode.OK, anyString);

La primera muestra dice que el “anyString” es un parámetro de segmento de ruta (parte de la URL).

La primera URL de ejemplo de muestra es:

  • servidor local:xxx/api/deliveryItems/dkjd;dslkf;dfk;kkklm;oeop
    • devoluciones "dkjd;dslkf;dfk;kkklm;oeop"

La segunda muestra dice que el “anyString” es una consulta string parámetro (opcional aquí ya que se ha proporcionado un valor predeterminado, pero puede convertirlo en no opcional simplemente eliminando el valor predeterminado).

Los segundos ejemplos de URL son:

  • servidor local:xxx/api/deliveryItems?anyString=dkjd;dslkf;dfk;kkklm;oeop
    • devoluciones "dkjd;dslkf;dfk;kkklm;oeop"
  • servidor local:xxx/api/deliveryItems
    • devoluciones "default"

Por supuesto, puedes hacerlo aún más complejo, como con esta tercera muestra:

[Route("api/deliveryitems")]
[HttpGet, HttpPost]
public HttpResponseMessage GetDeliveryItemsThree(string anyString, string anotherString = "anotherDefault")
" + anotherString);

La tercera URL de ejemplo de ejemplo es:

  • servidor local:xxx/api/deliveryItems?anyString=dkjd;dslkf;dfk;kkklm;oeop
    • devoluciones "dkjd;dslkf;dfk;kkklm;oeop||anotherDefault"
  • servidor local:xxx/api/deliveryItems
    • devuelve “No se encontró ningún recurso HTTP que coincida con el URI de la solicitud…” (parámetro anyString es obligatorio)
  • servidor local:xxx/api/deliveryItems?anotherString=bluberb&anyString=dkjd;dslkf;dfk;kkklm;oeop
    • devoluciones "dkjd;dslkf;dfk;kkklm;oeop||bluberb"
    • tenga en cuenta que los parámetros se han invertido, lo cual no importa, esto no es posible con el “estilo URL” del primer ejemplo

¿Cuándo debe usar el segmento de ruta o los parámetros de consulta? Ya se han dado algunos consejos aquí: REST API Mejores prácticas: ¿Dónde colocar los parámetros?

¿Has probado a usar el [FromUri] attribute al enviar parámetros sobre la consulta string.

Aquí hay un ejemplo:

[HttpGet]
[Route("api/department/getndeptsfromid")]
public List GetNDepartmentsFromID([FromUri]int FirstId, [FromUri] int CountToFetch)

    return HHSService.GetNDepartmentsFromID(FirstId, CountToFetch);

Incluya este paquete en la parte superior también, using System.Web.Http;

WebApiConfig.Register(GlobalConfiguration.Configuration); should be on top.

Recuerda algo, que te permitimos decir si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *