标签: http-method

ASP.NET MVC 2中的httppost,httpput等属性如何工作?

在ASP.NET MVC 2中,引入了一些新的动作过滤器属性,作为ASP.NET MVC 1中属性的"简写"; 例如,应用与HttpPostAttribute执行[AcceptVerbs(HttpVerbs.Post)]操作方法相同的操作.

此外,使用更详细的语法,可以组合不同的方法,以便例如允许PostDelete.

现在我想知道:新属性如何工作?如果我申请两个[HttpPost][HttpDelete],将ASP.NET MVC 2 允许两个或需要两者(从而使没有)?

c# http-method action-filter asp.net-mvc-2

6
推荐指数
1
解决办法
1万
查看次数

用于在RESTful服务中表示"即发即忘"操作的HTTP方法

考虑REST,将HTTP方法映射到CRUD操作相对容易:用于创建的POST,用于读取的GET等等.但是"即发即弃"操作呢?什么HTTP方法最能代表火灾和忘记操作,例如触发批处理作业(没有响应发送回调用者)?

POST会浮现在脑海中,但我认为GET也是一种合适的方法,因为99%的时候你只为这些类型的动作提供了一堆参数.你怎么看?

architecture rest http http-method

6
推荐指数
1
解决办法
4571
查看次数

Azure网站PHP API - PUT和DELETE上不允许使用405方法

我正在使用Azure网站构建一个简单的PHP Web服务,我无法使其支持PUT和DELETE http方法.假设它必须进入web.config文件 - 我尝试了几个来自互联网的选项,但它们似乎没有正常运行.有任何想法吗?

这是目前的web.config文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers>
    </handlers>
    <security>
    </security>
    <directoryBrowse enabled="false" />
    <caching>
      <profiles>
        <add extension=".php" policy="DontCache" kernelCachePolicy="DontCache" />
        <add extension=".html" policy="CacheForTimePeriod" kernelCachePolicy="CacheForTimePeriod" duration="14:00:00" />
      </profiles>
    </caching>
    <rewrite>
      <rules>
        <rule name="block favicon" stopProcessing="true">
          <match url="favicon\.ico" />
          <action type="CustomResponse" statusCode="404" subStatusCode="1"
          statusReason="The requested file favicon.ico was not found"
          statusDescription="The requested file favicon.ico was not found" />
        </rule>
        <rule name="Cols Rule" stopProcessing="true">
          <match url="^(.*)$" ignoreCase="false" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
            <add input="{URL}" pattern="^/favicon.ico$" …
Run Code Online (Sandbox Code Playgroud)

web-config azure http-method azure-web-sites

6
推荐指数
1
解决办法
2287
查看次数

MVC3为什么我会收到"不允许子操作执行重定向操作"错误?

我有一个动作列表

    //[HttpGet] (will come back to that!)
    public ViewResult List(int page = 1)
    {
        //blah blah blah
        return View(viewModel);
    }
Run Code Online (Sandbox Code Playgroud)

在它的视图中我们渲染动作:

@{        
    Html.RenderAction("UpdateSearch");
}
Run Code Online (Sandbox Code Playgroud)

行动定义:

[ChildActionOnly]
[HttpGet]
public PartialViewResult UpdateSearch()
{
    // do something and display a form in view
    return PartialView(so);
}

[HttpPost]
public RedirectToRouteResult UpdateSearch(Options searchOptions)
{
    // do something and redirect to List
    return RedirectToAction("List");
}
Run Code Online (Sandbox Code Playgroud)

而且我得到:每当有人提交表单时,不允许子操作执行重定向操作异常.我是MVC3的新手,但看起来重定向也是一个POST,因为如果[HttpGet]上面的List方法被取消注释"无法找到资源".

如何在重定向时更改Http方法或者我做错了什么?我确实试过Bing,但没有成功.

redirect http-method asp.net-mvc-3 child-actions

5
推荐指数
1
解决办法
4492
查看次数

使用HttpMethod的自定义值

我正在使用HttpClient,我需要设置非标准类型HttpMethod.如果使用HttpWebRequest只需要一个字符串,那么HttpClient期望一个HttpMethod.枚举可用值HttpMethod,我没有看到添加自定义值的方法.有什么想法吗?

c# http-method dotnet-httpclient

5
推荐指数
1
解决办法
1857
查看次数

为什么要使用 PUT 而不是 PATCH?

据我了解,PUT 请求发送整个对象,而 PATCH 请求只发送差异,差异用于更新数据库中的对象。

为什么要在 PATCH 上执行 PUT?PATCH 似乎得多。我看不到 PUT 的任何好处(我确定它们存在,我只是不知道它们是什么)。

http http-method

5
推荐指数
1
解决办法
1581
查看次数

REST API 中幂等和安全 HTTP 方法之间的区别

PUT 方法怎么可能是幂等的但不安全?有人可以解释一下吗?

HTTP Method   Idempotent      Safe
OPTIONS        yes            yes
GET            yes            yes
HEAD           yes            yes
PUT            yes            no
POST           no             no
DELETE         yes            no
PATCH          no             no
Run Code Online (Sandbox Code Playgroud)

java rest http http-method idempotent

5
推荐指数
1
解决办法
2351
查看次数

REST - PUT 方法在省略可选字段时是否必须删除该字段?

我有一个资源Car,其中有一些必填字段和另一个可选字段。

Car是根据以下请求创建的:

POST /cars
{
  plate: "XYZ-A2C4",
  color: "blue,
  owner: "John" //OPTIONAL
}
Run Code Online (Sandbox Code Playgroud)

REST 客户端想要更新这辆车的所有必需信息:

PUT /cars/:id
{
  plate: "ABC-1234",
  color: "black"
}
Run Code Online (Sandbox Code Playgroud)

可选字段会发生什么情况owner

  • 没有通知就被删除了?即:PUT 必须用有效负载中传递的表示替换整个资源?
  • 或者,由于owner不需要,服务器可以保留旧值?


我知道服务器可以提供一种PATCH方法,但有时无法更新单个字段,因为新状态可能会变得无效(没有强制执行相关字段值所需的最低有效负载)。此外,在某些情况下,操作数组、删除字段或设置它null可能会很棘手,PATCH因为它可以使用两种不同的模式来完成;JSON Merge Patch 是有限的,并且 JSON Patch有点奇怪


是否可以使用PUT必填字段执行 a 并且服务器在省略该字段时保留旧的可选值?

rest put http-method

5
推荐指数
1
解决办法
5952
查看次数

用于“重置为默认值”操作的 REST API 设计

我很惊讶地发现网上很少提到这个困境,这让我想知道我是否完全错过了一些东西。

假设我有一个名为 的单例资源Settings。它是在我的 Web 服务器的 init/install 上创建的,但某些用户可以通过 REST API 修改它,比如说/settings我的 URI。我有一项GET检索设置(作为 JSON)的操作,以及一项PATCH设置一个或多个值的操作。

现在,我想让用户在完成任何调用之前将此资源(或者可能是它的各个属性)重置为默认值 - 默认值是“init 上使用的任何值” PATCH。我似乎找不到任何“最佳实践”方法,但以下是我提出的方法:

  1. DELETE对资源使用操作。毕竟它是幂等的,而且(对我来说)非常清楚。但由于 URI 之后仍然存在DELETE,这意味着资源既没有被删除也没有移动到不可访问的位置,这与 的 RESTful 定义相矛盾DELETE
  2. 将 aPOST用于专用端点,例如/settings/reset- 我真的不喜欢这个,因为它是最明显的非 RESTful,因为动词位于 URI 中
  3. 使用相同的PATCH操作,传递一些“默认”的替代值,例如null值。我遇到的问题是操作的结果与输入不同(我将一个属性设置为null,然后我得到它,它有一个字符串值)
  4. 创建一个单独的默认端点GET,例如/setings/defaults,然后使用 a 中的响应PATCH设置为这些值。这似乎与 REST 没有任何矛盾,但它确实需要 2 个 API 调用才能完成看似简单的操作。

如果上述其中一项认为是最佳实践,或者如果我没有在上面列出其中一项,我很想听听。

编辑:

我的具体项目有一些属性可以简化这个问题,但我最初没有提到它们,因为我的目的是让这个线程作为将来尝试解决相同问题的任何人的参考。我想确保这个讨论足够通用,对其他人有用,但又足够具体,对我也有用。为此,我将附加以下内容。

就我而言,我正在为现有产品设计 API。它有一个面向普通用户的 Web 界面,还有一个 REST(ish)API,旨在满足需要使用所述产品自动执行某些任务的开发人员的 …

rest api-design http-method

5
推荐指数
1
解决办法
3901
查看次数

VTTEST 和 MOZILAVT HTTP 方法,这些是什么?

在过去的两天里,我收到了几个警报,因为我们的服务在很大一部分请求中响应了 5xx(通常是在下班时间,当我们的流量为零到低时)。

\n

当我检查应用程序日志时,我发现了这两个;

\n
Illegal request, responding with status \xe2\x80\x98501 Not Implemented\xe2\x80\x99: Unsupported HTTP method: MOZILLAVT\n\nIllegal request, responding with status \xe2\x80\x98501 Not Implemented\xe2\x80\x99: Unsupported HTTP method: VTTEST\n
Run Code Online (Sandbox Code Playgroud)\n

知道这些是什么以及哪些工具产生它们吗?谷歌没有帮助。

\n

很明显,我们的网站正在接受某种漏洞测试,因为我看到了 nginx 访问日志,但这些请求不存在,这更奇怪。

\n

http http-method

5
推荐指数
0
解决办法
895
查看次数