簡體   English   中英

如何在C#、. net中找到JObject的必填字段?

[英]How can I find the required fields of a JObject in C#, .net?

我有一個應用程序,日志通過API調用。 因此,當日志對象為空或http上下文為空或模型狀態無效時,出現400:錯誤請求錯誤。 我發現requestData標記為[required],我認為這是必填字段。 但是我的負責人說他希望日志中的所有字段都不會拋出400:Bad請求? 如果有人可以幫助我,我會很高興。 謝謝。

我試圖使用swagger並運行發布示例json文件以查看我得到了什么狀態代碼,我顯然得到了200 OK,因為必填字段在其中。

public void Post([FromBody]List<JObject> logData) 
    {
        if (!ModelState.IsValid)
        {
            _logger.LogError(
                $"Bad request - log data not well formed 
{StatusCodes.Status400BadRequest} {logData}");
            throw new BadRequestException("Bad request - log data 
not well formed",
                StatusCodes.Status400BadRequest);
        }
        if (logData?.Count <= 0)
        {
            _logger.LogError(
                $"Bad request - log data not well formed 
{StatusCodes.Status400BadRequest} {logData}");
            throw new BadRequestException("Bad request - log data 
not well formed",
                StatusCodes.Status400BadRequest);
        }
        foreach (var j in logData)
        {
            _logManager.Log(j, HttpContext);

I want to know what are the fields when I pass in the JSON will give 
me a 200 but not 400:Bad Request. Excluding requestData.

JObject是通用的,不能表示“必需”。 為了能夠進行模型驗證,您必須具有強類型化的模型類,以便可以將RequiredAttribute應用於RequiredAttribute的屬性。 假設這是一個控制器操作,則框架將自動將請求映射到此請求的實例( “模型綁定” )。

編輯:重新閱讀問題,我想您可能是想說您不想返回400,但是您的潛在客戶認為您應該這樣做。 問題不是很清楚。 但是我認為,從您擁有的代碼示例中,您的操作方法無法理解必填字段的概念,因此,如果向其發送有效的JSON,則ModelState.IsValid應該始終為true。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM