2017-08-01 20 views
1
[HttpPost("test")] 
public IActionResult Teste(int? id) 
{ 
    if (!id.HasValue) 
     return BadRequest(); 

    ... 
} 

「int」を使用せずにbadrequestを返すにはどうすればよいですか?クライアントがIDを送信しない場合必要なパラメータが不足しているため、不正なリクエスト(400)を返します。

この場合、自動的にbadrequestを返す簡単な方法がありますか?あなたはまだ確認することができ

[HttpPost("test/{id}")] 
public IActionResult Teste(int id) 
{ 
    if (id == default(int)) 
     return BadRequest(); 

    ... 
} 

:あなたはパラメータをオプションにすることができます

+1

あなたが尋ねていることは不明です。何が問題ですか。質問のコードは、あなたが求めていることを実行する必要があります。 – Nkosi

+0

私は 'int'を使用すると、クライアントがIDを送信しない場合、idは0になります。これはme.Thereの問題です。クライアントがいくつかのパラメータを送信しないと自動的にbadrequestを返す簡単な方法がありますか? –

+0

パラメータを 'int? id = null' – Nkosi

答えて

1

のようなデフォルト値を持っていますあなたが望むなら、idは0ではありません(またはより複雑なバリデーション)。 これは400のリクエストレスポンスを返さないが、それを行うには最も適切な方法だと言えるだろう。ユーザーにリクエスト本文のIDを渡してもらいたい場合を除いて、たとえば次のようにすることができます。属性検証を行い、ModelStateが不良要求を返すようにチェックします。あなたができる、

public IActionResult Teste(int id = -1) 

は、デフォルト値を設定する:

+0

私は余分な検証をスキップしようとしています。この 'if'はすべてのコントローラーだけでなく、そのコントローラー上のすべてのアクションに追加する必要があります。 –

+0

if文を省略するだけで良いと思うでしょう。これにより、クライアントは常にパス内のidを渡すようになります。クライアントが0などの無効なIDを渡すことを積極的に選択した場合の別のケースですが、その検証方法についてはわかりません... –

-1

は、このようなようにあなただけのパスにIDを入れていないのはなぜこの

[HttpPost("test")] 
public IActionResult Teste(int id=0) 
{ 
    if (id==0) 
     return BadRequest(); 

    ... 
} 
1

私は、迅速な回避策として、あなたはこのような何かを行うことができ、自動的に無効なパラメータの場合には400を送信する方法を知っているがありません簡単に無効なパラメータを特定し、400を返すか、好きなことをします。

また、入力のあいまいさをゼロの値で除外します。

関連する問題