gpt4 book ai didi

wcf - 与 WEBGET 相比,WebInvoke POST 的优势

转载 作者:行者123 更新时间:2023-12-03 09:46:41 29 4
gpt4 key购买 nike

嗨,我找到了 wcf REST 的示例之一,使用 WEBINVOKE 方法,如下所示

[OperationContract]
[WebInvoke(
BodyStyle=WebMessageBodyStyle.Bare,
Method="POST",
RequestFormat=WebMessageFormat.Xml,
ResponseFormat=WebMessageFormat.Xml,
UriTemplate="CreateStudent/{StudentName}/{Chair}/{AverageNote}")]
int Insert(string StudentName, string Chair, string AverageNote);


[OperationContract]
[WebGet(
BodyStyle= WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml)]
Student[] GetAllStudents();

我的问题是我可以像下面一样使用 WEBGET 方法而不是 WEBINVOKE 吗,WEBINVOKE POST 和 WEBGET 之间到底有什么区别,
根据我的观察,我们通过在 WEBGet 和 WebInvoke POST 的 URI 模板中附加查询字符串来发送参数,使用 WebInvoke POST 可以获得哪些优点,而使用 WEBGET 无法获得
[OperationContract]
[WebGet(
BodyStyle=WebMessageBodyStyle.Bare,
RequestFormat=WebMessageFormat.Xml,
ResponseFormat=WebMessageFormat.Xml,
UriTemplate="CreateStudent/{StudentName}/{Chair}/{AverageNote}")]
int Insert(string StudentName, string Chair, string AverageNote);

最佳答案

这是非常大的区别。首先,REST 通常与这些 HTTP 动词一起使用:

  • GET - 检索项目
  • POST - 插入项目
  • PUT - 更新项目
  • DELETE - 删除项目

  • 除了检索项目之外,您永远不应该将 GET 用于其他任何事情。使用 HTTP GET 进行数据修改在整个 Web 开发中被认为是一种不好的做法。要触发 GET,您只需在网页上创建链接或只需在浏览器中输入 URL。您将点击刷新 50 次,并且您有 50 个相同的插入。数据修改应始终使用 POST 完成。如果您有触发 HTTP POST 的表单(不能直接触发 Post)并且您点击刷新浏览器通常会询问您是否希望再次提交表单 = 如果您真的想再次向服务器发布和处理数据。

    另一个问题是 GET 请求可以缓存和重定向,但 POST 请求不能。

    关于wcf - 与 WEBGET 相比,WebInvoke POST 的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6136307/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com