gpt4 book ai didi

rest - ColdFusion 10 REST API : How to set status code 201 without RestSetResponse()

转载 作者:行者123 更新时间:2023-12-02 10:21:26 28 4
gpt4 key购买 nike

我正在使用 ColdFusion 10 的新内置 REST API,我想返回状态代码 201(已创建)。我首先尝试了此处描述的 RestSetResponse() 方法:http://www.adobe.com/devnet/coldfusion/articles/restful-web-services.html 。它工作得很好,只是它强制您将函数的返回类型设置为“void”。 “void”的问题是,每当我抛出异常时,它不再返回正确的 JSON 错误消息。

抛出此异常:

<cfthrow errorcode="400" message="Validation error." />

当返回类型为“struct”时,返回格式良好的 JSON:

HTTP/1.1 400 Bad Request
Content-Type: application/json

{"Message":"Validation error."}

但是当返回类型为“void”时(这是使用 RestSetResponse() 所必需的),响应是一些丑陋的 HTML 响应。

因此,我不得不恢复使用返回类型“struct”,放弃 RestSetResponse(),并尝试这样做:

<cfheader statusCode="201" statusText="Created" />

但是这不起作用。看来 ColdFusion 会覆盖 statusCode,并且在成功时总是返回 200(OK)。有人知道如何将状态代码更改为 201 而不将函数的返回类型设置为“void”吗?

最佳答案

我看不出一个很好的理由 restSetResponse()应该要求返回类型为 void,但已验证如果不是这种情况,则忽略它。这有点垃圾。

我能想到的解决您的情况的唯一方法是滚动您自己的结构,其中包含错误详细信息,然后将其用作 contentrestSetResponse() 设置的值打电话。

这有点偷工减料,但我认为在这种情况下,您会受到 ColdFusion 偷工减料的限制。

我已经logged a bug与此相关。

关于rest - ColdFusion 10 REST API : How to set status code 201 without RestSetResponse(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15711287/

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