AweiHe
(华鲲-Hewei)
1
// 此模板仅供参考,如果不适用可以修改
问题描述
[在这里详细描述您遇到的问题]
我有一个redfish接口,支持PATCH和GET,patch仅调用方法,这个方法会返回一个Result,0成功,1失败
我想在调用PATCH时在响应体返回一个Status,而直接调用Get则不返回Status。
这种目前能实现吗
环境信息
-
操作系统:Ubuntu 24.04
-
软件版本:OpenUBMC2509
-
硬件配置:[如 CPU、内存等]
重现步骤
-
[第一步]
-
[第二步]
-
[第三步]
期望结果
[您希望实现什么]
实际结果
[实际发生了什么,包含错误信息]
尝试过的解决方案
[列出您已经尝试过的解决方案及结果]
AweiHe
(华鲲-Hewei)
3
想到2种思路
- 组件中新增一个属性表示LastSetStatus 值有0成功,1失败,255默认值
patch调用设置方法->未抛错->调用Get,如果255转换为cjson.null,如果为0,或者1直接赋值给响应体 ,然后设置为255
直接调用Get,每次属性值必然是255,所以不会在直接的Get中显示
前提:组件设置失败不会抛出错误,而是返回一个状态码(0成功 1失败)
2.使用ngnix反向代理的方式
vyasa
(欧文健)
4
强行让PATCH接口增加参数会导致PATCH和GET得到的etag不一致。不推荐做该实现
AweiHe
(华鲲-Hewei)
5
我当前是在客户定制仓新增了个BiosOperationResult类,LastImportBiosSetupStatusBySetting(BIOS Settings PATCH 操作状态: 0-成功, 1-失败, 255-默认值(未操作),默认值为255
只执行Get时有2步操作
if 255 return lua_nil else return rspbody.Status = LastImportBiosSetupStatusBySetting
if LastImportBiosSetupStatusBySetting == (0 or 1) then LastImportBiosSetupStatusBySetting = 255
执行PATCH,插件调用bios组件的ImportBiosSetup方法,用pcall捕捉异常,路径中触发任何异常,则LastImportBiosSetupStatusBySetting赋值为1,否则赋值为0。意味着PATCH只会出现200返回码。必然调用Get。
效果:仅仅调用Get,返回体无Status
执行PATCH,返回体必然出现Status
先调用PATCH返回体有Status,再调用Get返回体无Status