私は次のように私は3つのgetメソッドを持っている必要があります1つのリソース教材を持っているWeb APIを構築しています:は、ASP.NETコアウェブAPIで複数のクエリ文字列パラメータを持つ複数の取得・メソッドを持つ
[HttpGet]
[Route("{city}/{streetName}/{streetNumber}/{littera}")]
public IActionResult GetByAddress([FromQuery]string city, [FromQuery]string streetName, [FromQuery]int streetNumber, [FromQuery]string littera)
{
var model = _availabilityService.FindByAddress(city, streetName, streetNumber, littera);
return Ok(model);
}
[HttpGet("{pointId}")]
public IActionResult GetByPointId(string pointId)
{
var model = _availabilityService.FindByPointId(pointId);
return Ok(model);
}
[HttpGet]
[Route("{xCoordinate}/{yCoordinate}")]
public IActionResult GetByCoordinates([FromQuery]decimal xCoordinate, [FromQuery]decimal yCoordinate)
{
var model = _availabilityService.FindByCoordinates(xCoordinate, yCoordinate);
return Ok(model);
}
GETをメソッドが1つのパラメータ(pointId)だけを持つメソッドは、クエリ文字列ではなくむしろidであるため、正常に動作しています。しかし、残りの2つの方法は、ASP.NETのルータで区別できないようです。
私は本当にここに迷っており、なぜ動作しないのか理解できません。私が解決することができたのは、もし私がそのメソッドの1つを削除すれば、もう1つはうまく動作するということです。
私が間違っていることに関する提案はありますか? FYI
、対応するURL:Sは次のようになりべき:
api/1.0/availabilities?city=Metropolis&streetName=Superstreet&streetNumber=1&littera=A
と
/api/1.0/availabilities?xCoordinate=34.3444&yCoordinate=66.3422
ありがとう!
あなたはそれが機能していないと言うとき、正確に何か別の2つのアクションを呼び出すことで取得できますか? 404? – jpgrassi
@jpgrassi:私はちょうど500の内部サーバーエラーを取得しています。私はデバッガを使用しましたが、エンドポイントが決して到達しないということが起こります。結論として、私のルーティングは混乱し混乱しています。 :( –