2
[HttpGet("{id}")]
public string Get(int id)
{
return "value";
}
このような要求が成功します! http://localhost:53351/api/values/abc
なぜですか?
IMHO、これはBad RequestのIDが数字ではないため(abcです)送信されます。代わりに、id
パラメータとして0(ゼロ)を取得しています。
また=>
非常によく似た問題は、このような方法で起こる:この http://localhost:53351/api/values/1?String=hello&Number=ABCとして解析し、置かれ オブジェクト等の要求に
[HttpGet("{id}")]
public string Get(int id, [FromQuery]QueryObject queryObj)
{
return "value";
}
public class QueryObject
{
public int Number { get; set; }
public string String { get; set; }
}
をqueryObj
のnumberプロパティは0(ゼロ)に設定されています。
これにより、無効なデータがパイプを通過します。私たちはこの行動を避けることができますか?
うわー、素敵! 「クエリーオブジェクト」でどのように取得するのですか?私は問題を反映するためにOPを編集しました(MOREOVERタイトルの下)。 – SuperJMN
@SuperJMN、私は答えを –
更新しましたありがとう!しかし、どのようにQueryObjectsに制限を加えることができますか? Numberが整数だけを受け入れるようにします。あなたが置く属性には名前だけがあります(マッピング目的のために、私は推測します)。私が必要とするのは、 "&Number = abc"をクエリーストリングに入れれば、Numberに0を持たないようにすることです。私は、クエリがうまくフォーマットされていないことを消費者に示すBad Requestまたは何かを取得したいと思います。 – SuperJMN