亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 SQL Server 中插入新數據的 Post 或 Put 方法?

在 SQL Server 中插入新數據的 Post 或 Put 方法?

C#
泛舟湖上清波郎朗 2022-06-19 16:38:12
我是 ASP.NET 的新手,我想問一下哪種方法更適合在 SQL Server 中插入新行。我要避免的最大問題是將數據重復插入 SQL Server。也許由于一些網絡延遲,我會在我的客戶端應用程序中出現服務器錯誤,但服務器已經收到我的數據并將它們插入 SQL Server。當我重試時,它會重新插入它們。post 或 put 方法可以避免這種情況嗎?或者我需要創建自己的機制?public void Post([FromBody]string value){}// PUT api/values/5public void Put(int id, [FromBody]string value){}還有最后一個問題,我可以在同一個控制器中創建兩個 post 方法還是必須創建一個新方法?抱歉,如果問題看起來很簡單,但正如我所說,我是 asp.net 的新手。謝謝
查看完整描述

2 回答

?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

POST 或 PUT 方法本身并不能解決任何問題。如果您想避免您描述的行為,您應該通過向該方法添加您自己的邏輯來解決該問題。您的實現必須控制數據是否存在。


理想情況下,在 REST API 上,POST 用于創建資源,PUT 用于更新現有資源。


話雖如此,您可以根據誰在調用該端點以及在應用程序的哪個實例中來實現您的邏輯。例如,如果有人兩次使用同一資源發送 POST,您可以檢查該資源是否存在并發送描述該情況的 HTTP 狀態。


編輯:


我將添加一些代碼向您展示。它是如何工作的:


假設您想在應用程序中創建和更新用戶。其端點可能類似于:http://localhost:8080/api/users/使用 POST 方法并將用戶作為 JSON 發送到請求正文中。


您將擁有一個像這樣的 UsersController:


    public HttpResponseMessage Post([FromBody]UserModel user)

    {

        SQL.InsertUser(user);


        return Request.CreateResponse(HttpStatusCode.OK);

    }

然后在數據層你可以做這樣的事情:


    public static void InsertUser(UserModel user)

    {

        try

        {

            using (_conn = new SqlConnection(_connectionString))

            {

                _conn.Execute(@"IF EXISTS(SELECT * FROM USER WHERE ID = @ID)

                                BEGIN

                                    /*DO THE UPDATE*/

                                END

                            ELSE

                                BEGIN

                                    /*DO THE INSERT*/

                                END", user);

            }

        }

        catch (Exception ex)

        {

            throw ex;

        }

    }

這不是最佳方法,但我想在這里展示的是您可以在 POST 或 PUT 上插入資源。問題是 RESTful API 的設計目的是遵循 RESTful 標準。如果您使用 PUT 方法插入數據,那么您可能會遇到架構問題,并且您的 API 根本不是 RESTful。即使它使用 HTTP 方法形成通信等等。


在 RESTful API 上遵循標準非常重要。對于您和使用 API 的人。


在這里,您獲得了 RESTful 入門圣經。我通常將此發送給所有希望了解 RESTful 世界的人:https ://blog.octo.com/en/design-a-rest-api/


查看完整回答
反對 回復 2022-06-19
?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

我們用 [HttpPost] 屬性修飾的 Post() 方法。

Put() 能夠更新 RESTful 服務中的某些內容


查看完整回答
反對 回復 2022-06-19
  • 2 回答
  • 0 關注
  • 359 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號