es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Intentando crear una respuesta personalizada en Dancer2

Actualmente estoy tratando de crear una respuesta personalizada de Dancer para poder devolver mi resultado en json, sin embargo, cuando ejecuto el siguiente código, obtengo el error:

No se puede localizar el método del objeto "new" a través del paquete "Dancer::Response" (¿quizás olvidaste cargar "Dancer::Response"?) en la línea 11 de app.pl./

Aquí está el código:

 #!/usr/bin/perl
use warnings;
use strict;

use Dancer2;
require './commacounter.pl';

print "Running";

Dancer::Response->new(
    status => 200,
    content => 'null'
);

my $response = Dancer2::SharedData->response;

Dancer2::SharedData->response->status; #200

get '/text=:string' => sub {
    $response->content_type('application/json');
    $response->content(commacounter(params->{string}));
    return $response;
};

any qr{.*} => sub {
    status 'not_found';
    template 'special_404', { path => request->path};
};

dance;

¿Alguien sabe por qué estoy obteniendo un error o si hay una mejor manera de hacer esto?
¡Muchas gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que no se encuentra el método “new” en el paquete “Dancer::Response”. Esto se debe a que en el código, el paquete utilizado en realidad es “Dancer2::Response”, que es el paquete correcto para usar en Dancer versión 2. Por lo tanto, el código correcto debería ser:

    #!/usr/bin/perl
    use warnings;
    use strict;
    
    use Dancer2;
    require './commacounter.pl';
    
    print "Running";
    
    Dancer2::Response->new(
        status => 200,
        content => 'null'
    );
    
    my $response = Dancer2::SharedData->response;
    
    get '/text=:string' => sub {
        $response->content_type('application/json');
        $response->content(commacounter(params->{string}));
        return $response;
    };
    
    any qr{.*} => sub {
        status 'not_found';
        template 'special_404', { path => request->path};
    };
    
    dance;
    

    Esto debería solucionar el mensaje de error y permitir que la respuesta personalizada devuelva el resultado en formato json.

Comments are closed.