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"
- devoluciones
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"
- devoluciones
- servidor local:
xxx/api/deliveryItems
- devoluciones
"default"
- devoluciones
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"
- devoluciones
- 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)
- devuelve “No se encontró ningún recurso HTTP que coincida con el URI de la solicitud…” (parámetro
- 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
- devoluciones
¿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ó.