开发者社区 > 云原生 > 正文

GateWay 在文件上传时,能对body 修改操作吗?(想额外增加上传的用户信息) ,有搞过没有

GateWay 在文件上传时,能对body 修改操作吗?(想额外增加上传的用户信息) ,有搞过没有 ?

展开
收起
码字王 2023-07-27 18:18:13 101 0
3 条回答
写回答
取消 提交回答
  • 必须可以啊,implement GlobalFilter, new 一个 exchange

    此答案来自钉钉群“群5 Spring Cloud Alibaba"

    2023-07-28 10:33:03
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    在API网关中,通常是不建议对请求体(body)进行修改操作的。因为请求体是上传的文件数据,修改请求体可能会导致文件数据的损坏或丢失。而且,修改请求体还可能会影响上传文件的完整性和安全性。

    如果您需要在上传文件时增加额外的用户信息,可以考虑使用HTTP头部(header)或查询参数(query parameter)来传递信息。这种方式不会影响上传文件的完整性和安全性,也不会修改请求体,可以更好地保护上传文件的完整性和安全性。

    具体来说,您可以在HTTP头部或查询参数中添加用户信息,例如:

    在HTTP头部中添加用户信息:

    scheme
    Copy
    curl -H 'X-User-Info: {"userId":123,"userName":"Alice"}' -F 'file=@/path/to/file' https://example.com/upload

    
    在查询参数中添加用户信息:
    
    scheme
    Copy
    curl -F 'file=@/path/to/file' '[https://example.com/upload?userId=123&userName=Alice' ↗](https://example.com/upload?userId=123&userName=Alice')
    

    在服务端,您可以从HTTP头部或查询参数中获取用户信息,并进行相应的处理。

    2023-07-28 08:03:44
    赞同 展开评论 打赏
  • 在API网关中,您可以使用请求转换(Request Transformation)功能来对HTTP请求的body进行修改操作。这样您就可以额外增加上传的用户信息或进行其他自定义操作。

    以下是一些可能的解决方案:

    1. 使用Mapping Templates:通过创建和配置映射模板,您可以将原始的请求body重新构造为包含额外信息的新请求body。例如,您可以使用Velocity模板语言来添加用户信息到上传的请求中。

    2. 自定义Lambda函数:您可以在API网关中使用AWS Lambda来执行更复杂的请求转换操作。通过编写自定义的Lambda函数,您可以根据需要修改请求的body,并添加额外的用户信息。然后将Lambda函数与API网关集成,以实现请求转换。

    2023-07-27 21:07:51
    赞同 展开评论 打赏
问答标签:
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载