Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http Web API-如何在响应中返回特定的状态代码?_Http_Asp.net Web Api - Fatal编程技术网

Http Web API-如何在响应中返回特定的状态代码?

Http Web API-如何在响应中返回特定的状态代码?,http,asp.net-web-api,Http,Asp.net Web Api,我希望实现正确的HTTP语义,并根据资源是创建的还是更新的,以及在响应内容中描述创建的资源,返回从PUT操作创建的200 OK或201 遗憾的是,PUT的WebAPI示例没有向您展示如何做到这一点。您应该如何指定错误代码并返回响应正文?如果您确实可以返回请求内容,那么下面是一种更有效的方法。这将避免所有内容的反序列化和重新序列化 // PUT // path/to/{resourceName} public HttpResponseMessage Put(CreateR

我希望实现正确的HTTP语义,并根据资源是创建的还是更新的,以及在响应内容中描述创建的资源,返回从PUT操作创建的200 OK或201


遗憾的是,PUT的WebAPI示例没有向您展示如何做到这一点。您应该如何指定错误代码并返回响应正文?

如果您确实可以返回请求内容,那么下面是一种更有效的方法。这将避免所有内容的反序列化和重新序列化

    // PUT 
    // path/to/{resourceName}
    public HttpResponseMessage Put(CreateResourceRequest request)
    {
        //do stuff...

        // Return 200 [OK] if it is an update and 201 [CREATED] if the resource is created. 
        // Usually, the response body should be same as the original request.
        var responseContent = request;
        return Request.CreateResponse(created ? HttpStatusCode.Created : HttpStatusCode.OK, responseContent);
    }
public HttpResponseMessage Put(HttpRequestMessage request)
    {
        // do stuff

        return new HttpResponseMessage(created ? HttpStatusCode.Created : HttpStatusCode.OK ) {
            Content = request.Content
        };
    }

酷,这是一个很好的提示!:)