0
は私が持っているHTTPGETエンドポイントAspNetCore - のQueryStringのアレイBadRequest
[Authorize]
[HttpGet("filter/{filters}"), Route("filter")]
public virtual IActionResult Filter(string filters)
{
try
{
return Ok(Service.GetByFilter(JsonConvert.DeserializeObject<FilterHelper>(filters)));
}
catch (Exception ex)
{
Logger.LogWarning(LoggingEvents.GET_ENTITY_BY_FILTER, ex, Localizer["EntityGetFilterFailed"]);
return Ok(new RequestResult(StatusResult.Danger, new Message(string.Format(Localizer["UnexpectedError"], LoggingEvents.GET_ENTITY_BY_FILTER))));
}
}
昨日の文字列を受け取ることは、それがうまく働いていた、今日の私のPCがブートに失敗し、私のAPIを与えていることをした後、復元されているシンプルな私の悪い要求の結果。
私は要求が正しく動作しますが、私は(それ以前の作品)このURLを呼び出そうと
http://localhost:23272/api/users/filter?filters={"Page":1,"PageSize":5}
このURLを呼び出すと
http://localhost:23272/api/users/filter?filters={"Page":1,"PageSize":5, "FilterItens": []}
APIくれBadRequestステータスを返送( 400)。既にいくつかのitens、badrequestも配列を渡そうとしました。
これをどのように処理するかに関するアイデアはありますか?
詳細:私が郵便配達所から電話すると、それは正しく機能します。
http://localhost:23272/api/users/filter?filters={"Page":1,"PageSize":5, "FilterItens": []}
マイモデル
public class FilterHelper
{
#region Properties
public int Page { get; set; }
public int PageSize { get; set; }
public ICollection<FilterItem> FilterItens { get; set; }
public string[] Includes { get; set; }
#endregion
}
モデルを表示していないので、typo => 'FilterItens'はおそらく' FilterItems'であるはずです。しかし、HTTPは "配列"の概念を持たず、サーバーによってのみ解釈されることに注意してください。すなわち、「q q = 1&q = 2」が2 q値として送信される。配列ではありません。 '?q [] = 1&q [] = 2'と同じです。 '?q = 1&q = 2'は、「最後に取得する」または「最初に取得する」または「最初に取得する」と扱うことができます。サーバー(PHP、.NET、ASP.NET、Python、Rubyなど)複数の値を配列として扱う "。使用されているフレームワークは、** HTTP仕様書ではありません** HTTP仕様 – Tseng
これは誤字ではなく、私はモデルを "文字列"として受け取っています.APIは変換前にそのエラーを返します。私のモデルで編集しました –
@Tseng "{" "Page":1、 "PageSize":5、 "FilterItens":[]} "をAPIに文字列として送り、サーバ上でレンダリングしようとしています。 私は郵便配達員と一緒に送っても問題ありません。角度で送った場合、それは破損します。 –