【问题标题】:How do I redirect to a url from a micronaut controller?如何从 micronaut 控制器重定向到 url?
【发布时间】:2019-05-24 18:36:06
【问题描述】:

我有一个控制器,它接受一些参数处理它,并且应该通过重定向到给定的 url 将参数返回给 UI。

我试过HttpResponse.seeOtherHttpResponse.redirect 都显示银行页面和“查看其他”消息,但没有重定向到现有的可服务页面。我在这里错过了什么?

@Post('/getServ')
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.TEXT_HTML)
HttpResponse<String> serve(@Nullable @Body LinkedHashMap payload) {
    //...
    URI location = new URI(redirectURL)
        return HttpResponse.redirect(location).
            header("Location", redirectURL).
            status(302).
            header("JWT", jwt.toString())
    //...
}

预期的结果应该是从控制器重定向到一个 url。

【问题讨论】:

    标签: java groovy micronaut


    【解决方案1】:

    没试过,应该可以的:

    @Post('/getServ')
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    HttpResponse<String> serve(@Nullable @Body LinkedHashMap payload) {
        //...
        URI location = new URI(redirectURL)
            return HttpResponse.redirect(location).
                header("JWT", jwt.toString())
        //...
    }
    

    您的端点不会产生 text/html - 重定向是一个空响应,只设置了 Location 标头(由框架设置)。但是,返回 (Content-Type) 标头可能会使您的浏览器感到困惑。

    您也不应该直接额外设置状态码和位置标头。

    【讨论】:

    • 此更改无效。它仍然基于seeOther和redirect方法显示303 See Other302,但不显示重定向页面。
    猜你喜欢
    • 2012-01-05
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    相关资源
    最近更新 更多