2015-10-07 16 views
6

voglio avere per ottenere metodi sulla mia api, uno con il percorso con parametri di percorso:Come distinguere parametri di ricerca dai percorso Parametri

api/persone/{PersonID}

e uno con il percorso con i parametri di query:?

api/persone text = qualcosa

ma se ho messo questo codice:

// GET: api/people/{personId} 
[Route("api/people/{personId}")] 
[HttpGet] 
public HttpResponseMessage Get(long personId) 
{ 
} 

// GET: api/people?text=something 
[Route("api/people")] 
[HttpGet] 
public HttpResponseMessage Get(string text) 
{ 
} 

e quindi si tenta di aprire /API/persone/1 si dice formato sbagliato e quando provo ad aprire /api/persone text = qualcosa esso? lavori.

ho solo il percorso di default definito:

config.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{id}", 
     defaults: new { id = RouteParameter.Optional } 
    ); 

Come posso averli entrambi a lavorare? Definisci che se si tratta di un parametro percorso vai al primo e se è un parametro di ricerca vai al secondo?

+0

Cosa succede quando si cambia 'long' in' int'? (Per curiosità). Bella domanda, però. Non sono sicuro della risposta (ancora). Non avrei pensato che avresti avuto problemi a guardare questo codice. –

+0

Ho testato questo esatto scenario con Web API 2.2 e funziona. Penso che tu stia utilizzando una vecchia versione dell'API Web. –

+0

@JayMee 'long' o' int' il risultato è lo stesso –

risposta

4

Inserisco questo in Visual Studio 2015 utilizzando Web API 2 e funziona correttamente. Ho dovuto aggiungere le seguenti righe (una per ciascun metodo del controller).

return Request.CreateResponse(HttpStatusCode.OK); 

Ho anche eliminato la configurazione di percorso predefinita. I seguenti URL funzionano bene

http://localhost:64377/api/people/1

http://localhost:64377/api/people?text=Hello

mi ha colpito entrambi i rispettivi metodi nel mio controller quando ho messo questi URL in IE.

+0

Questo ha funzionato credo che il problema fosse la configurazione predefinita della Route, grazie amico! ;) –

+0

Nessun problema. Saluti! –

Problemi correlati