如何从gcp中的spring cloud函数发送回自定义的http响应代码?

问题描述

我们正在使用Java / Kotlin使用新的gcp云功能

与当前参考实现一样,我们将返回 org.springframework.messaging.support.Genericmessage 对象。

所以我们的代码看起来像这样(科特琳):

   fun generatePdfInBase64(message: Message<Map<String,Any>>): Message<*> {
        val document = process(message)
        val encoded = Base64.getEncoder().encodetoString(document.document)
        return Genericmessage(encoded)
    }

我们找不到任何将自定义http响应代码包含到我们的消息中的方法,例如201之类的。该功能只会在没有异常的情况下响应200或500。

有人知道这样做的方法吗?

最美好的祝愿

安迪

解决方法

正如官方documentation所提到的那样,HttpResponse类具有一个名为setStatusCode的方法,您可以在其中方便地设置状态编号

例如:

 switch (request.getMethod()) {
      case "GET":
        response.setStatusCode(HttpURLConnection.HTTP_OK);
        writer.write("Hello world!");
        break;
    

另一方面,GenericMessage的constructor接收有效负载作为参数,因此,我认为您可以创建json格式的字符串,并使用构造函数来创建具有所需状态响应的GenericMessage实例。

如果您想进一步了解法规代码,请查看此document