Mam api interfejsu WWW, gdzie mam 2 metody, jedna bez parametru i dwie z różnymi typami parametrów (string i int). Podczas wywoływania metody string nie działa ... czego tu brakuje?wywołanie api sieci z parametrem ciągu znaków
public class MyControllerController : ApiController
{
public IHttpActionResult GetInt(int id)
{
return Ok(1);
}
public IHttpActionResult GetString(string test)
{
return Ok("it worked");
}
}
WebApiConfig.cs:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
My Call:
/api/MyController/MyString //Doesnt work
/api/MyController/1 //work
mi się następujący błąd:
The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Http.IHttpActionResult GetInt(Int32)' in 'TestAngular.Controllers.MyControllerController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Czego mi brakuje w moją prośbę?
Nie potrzebujemy ' Atrybut WebMethod' dla WebAPI –
Nie można użyć tej samej trasy dla dwóch różnych punktów końcowych. Metoda GetInt wygrywa i będzie używać obu żądań. – PinBack
Jak to zrobić? dodać {action} w routeTemplate? – MrProgram