簡體   English   中英

如何在郵遞員的郵政操作中將id存儲在環境變量中?

[英]how to store the id in environment variable from post operation in postman?

我無法在郵遞員TEST中設置環境變量。 我的響應正文在執行POST操作后僅顯示1。 在響應頭中,我得到Transfer-Encoding→分塊,Content-Type→application / json; charset = utf-8等等...我不是完全在傳輸編碼方面造成問題嗎?

郵遞員錯誤畫面1

郵遞員錯誤屏幕2

public JsonResult CreateCustomer([FromBody]Customer customer)
    {
        try
        {
            BaseDataAccess baseDataAccess = new BaseDataAccess(_config["ConnectionStrings:DefaultConnection"]);

            List<DbParameter> parametersList = new List<DbParameter>();

            parametersList.Add(baseDataAccess.GetParameter("StatementType", "Insert"));
            parametersList.Add(baseDataAccess.GetParameter("Name", customer.Name));
            parametersList.Add(baseDataAccess.GetParameter("Email", customer.Email));
            parametersList.Add(baseDataAccess.GetParameter("PrimaryPhone", customer.PrimaryPhone));
            parametersList.Add(baseDataAccess.GetParameter("AlternatePhone", customer.AlternatePhone));
            parametersList.Add(baseDataAccess.GetParameter("Address1", customer.Address1));
            parametersList.Add(baseDataAccess.GetParameter("Address2", customer.Address2));
            parametersList.Add(baseDataAccess.GetParameter("Address3", customer.Address3));
            parametersList.Add(baseDataAccess.GetParameter("City", customer.City));
            parametersList.Add(baseDataAccess.GetParameter("State", customer.State));
            parametersList.Add(baseDataAccess.GetParameter("Country", customer.Country));
            parametersList.Add(baseDataAccess.GetParameter("Zip", customer.Zip));

            return Json(baseDataAccess.ExecuteNonQuery("[dbo].[CreateCustomer]", parametersList, CommandType.StoredProcedure));
        }
        catch (Exception e)
        {
            throw e;
        }
    }

我懷疑這個問題涉及一些誤解。 ExecuteNonQuery的結果與存儲過程的輸出代碼或結果相混淆。 return Json(..)傳遞了一個數字,但是Javascript代碼期望響應包含一個對象。 Environment variable似乎與問題無關。

Javascript代碼:

var jsonData = JSON.parse(responseBody);
...
.... jsonData.customerId);

期望響應包含一個JSON字符串,其中包含一個帶有customerId屬性的對象。

不過,服務器代碼僅返回行數:

return Json(baseDataAccess.ExecuteNonQuery("[dbo].[CreateCustomer]", parametersList, CommandType.StoredProcedure));

ExecuteNonQuery返回受查詢或存儲過程影響的行數。 插入一行將返回1。它不會返回存儲過程的結果或輸出參數。

這意味着服務器將有效地執行以下操作:

return Json(1);

響應將包含一個普通的1

要返回帶有customerId的JSON對象,代碼應更改為:

var newItem=new {customerId=thatNewId;};
return Json(newItem);

這將返回Java期望的{'customerId: 1234}

在不知道存儲過程做什么的情況下,人們只能猜測如何提取新ID。 C#代碼中沒有輸出參數,因此我假設ID作為單個結果返回,例如:

SELECT @@IDENTITY;

該網絡應用應使用ExecuteScalar

var thatNewId = baseDataAccess.ExecuteScalar("[dbo].[CreateCustomer]", 
                                              parametersList, 
                                              CommandType.StoredProcedure);

全部放在一起:

var thatNewId = baseDataAccess.ExecuteScalar("[dbo].[CreateCustomer]", 
                                              parametersList, 
                                              CommandType.StoredProcedure);
var newItem=new {customerId=thatNewId;};
return Json(newItem);

我只是假設POSTMAN代碼是正確的

暫無
暫無

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

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