私は2つのgetメソッドでasp.net webapiを作成しています。一方はすべてのレコードを返し、もう一方はcountrycodeという文字列パラメータに基づいてフィルタリングする必要があります。文字列パラメータの取得メソッドが呼び出されない理由はわかりません。Webapiメソッド呼び出されない文字列パラメータで取得する
私は、次のURIの
http://localhost:64389/api/team/'GB'
http://localhost:64389/api/team/GB
私のコード
ウェブAPIである
public HttpResponseMessage Get()
{
var teams = _teamServices.GetTeam();
if (teams != null)
{
var teamEntities = teams as List<TeamDto> ?? teams.ToList();
if (teamEntities.Any())
return Request.CreateResponse(HttpStatusCode.OK, teamEntities);
}
return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Team not found");
}
public HttpResponseMessage Get(string countryCode)
{
if (countryCode != null)
{
var team = _teamServices.GetTeamById(countryCode);
if (team != null)
return Request.CreateResponse(HttpStatusCode.OK, team);
}
throw new Exception();
}
WebAPIConfig
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Formatters.JsonFormatter.SupportedMediaTypes
.Add(new MediaTypeHeaderValue("text/html"));
}
}
次のことを試してみました
こんにちはCraig、[Route( "{teamName}")]のような別のメソッドがある場合はどうすればいいですか? public HttpResponseMessage GetTeamName(string teamName)。どのように私のルートは、両方の文字列パラメータを取るようにGet要求をdeerenciate – Tom
ちょっとトム、私は答えの最後にビットを追加しました。お役に立てれば。 –
@CraigH - あなたは男です...ありがとう。 "これは、デフォルトルートのオプションのパラメータ名が 'id'であるためです。この行は私の人生を救った...私はすべてを正しくしたが、idセグメントの変数を私が使っていたものに変更するのを忘れた。 ありがとうもう一度.... –