Asp.net web api HTTP动词,WebAPI

Asp.net web api HTTP动词,WebAPI,asp.net-web-api,restful-architecture,httpverbs,Asp.net Web Api,Restful Architecture,Httpverbs,我想知道POST和PUT在WebAPI中的使用场景。我知道POST是用来创建资源的,PUT是用来更新资源的,但我不能完全理解为什么我们需要一个PUT来覆盖POST 我有两个WebAPI方法,用于创建/更新SQL存储区中的数据 1.CreateUser(UserDto) 2.更新用户(UserDto) UserDto包含用户ID、用户名和电子邮件 我可以对CreateUser和UpdateUser方法使用POST,这两种方法都可以创建用户并将用户更新到我的商店 那么,将POST用于CreateUs

我想知道POST和PUT在WebAPI中的使用场景。我知道POST是用来创建资源的,PUT是用来更新资源的,但我不能完全理解为什么我们需要一个PUT来覆盖POST

我有两个WebAPI方法,用于创建/更新SQL存储区中的数据 1.CreateUser(UserDto) 2.更新用户(UserDto)

UserDto包含用户ID、用户名和电子邮件

我可以对CreateUser和UpdateUser方法使用POST,这两种方法都可以创建用户并将用户更新到我的商店

那么,将POST用于CreateUser和PUT用于updateuser的真正优势是什么?这只是一个标准/惯例吗


谢谢你

这篇文章总能创造一些新的东西。将更新放在现有的东西上。这是一个惯例

你应该:

发布/用户:创建新用户。有效载荷不应包括ID

PUT/user/(id):用有效负载中的数据替换用户DTO。同样,有效负载不应包含用户id

修补程序/用户/(id):更新用户的特定成员,但不更新id


这是一种设计惯例,就像软件设计模式一样,使任何使用API的人都能轻松地进行沟通和理解。

POST总是会创造一些新的东西。将更新放在现有的东西上。这是一个惯例

你应该:

发布/用户:创建新用户。有效载荷不应包括ID

PUT/user/(id):用有效负载中的数据替换用户DTO。同样,有效负载不应包含用户id

修补程序/用户/(id):更新用户的特定成员,但不更新id


与软件设计模式一样,它是一种设计惯例,使任何必须使用API的人都能轻松地进行沟通和理解。

POST通常用于将新资源添加到资源集合中。 像这样:
POST/users
。 这个操作不是幂等的,每次调用都会产生副作用

而PUT通常与replace语义一起使用,您知道要替换的确切资源。 像这样:
PUT/users/1

此操作是幂等的,不会对后续调用产生任何副作用。

POST通常用于将新资源添加到资源集合中。 像这样:
POST/users
。 这个操作不是幂等的,每次调用都会产生副作用

而PUT通常与replace语义一起使用,您知道要替换的确切资源。 像这样:
PUT/users/1

此操作是幂等的,不会对后续调用产生任何副作用。

不同之处在于PUT在设计上是幂等的。检查此标记以了解更多信息:如果PUT在设计上是幂等的,这是因为根据HTTP规范,其URI是要创建或更新的对象的标识符(与POST相反)。许多问题可能重复:区别在于PUT在设计上是幂等的。检查此标记以了解更多信息:如果PUT在设计上是幂等的,这是因为根据HTTP规范,其URI是要创建或更新的对象的标识符(与POST相反)。许多问题可能重复:“POST总是创建新的东西”:不一定(例如,如果有效负载包含ID)。它取决于API(与PUT相反,PUT总是幂等的,因为对象的sID是URI)?发送409代码确实可以实现幂等性。通过这样做,“N>0个相同请求的[存储中]副作用与单个请求相同”。“POST总是创建新的内容”:不一定(例如,如果有效负载包含ID)。它取决于API(与PUT相反,PUT总是幂等的,因为对象的sID是URI)?发送409代码确实可以实现幂等性。通过这样做,“N>0个相同请求的[存储中]副作用与单个请求相同”。