2017-04-07 4 views
0

J'ai vérifié GitHub Repo et doc mais je n'arrivais toujours pas à trouver comment obtenir l'adresse IP du client dans Plumber.Comment obtenir l'adresse IP du client dans R Plumber

est la mise en œuvre, je ici essayé, je veux ajouter des adresses IP pour toutes les demandes dans le fichier journal,

#' @post /v1/rl 
rl_v1 <- function(a, b, c){ 
    request='rl' 
    start_time <- as.numeric(as.POSIXct(Sys.time())) 
    log_record <- paste(NULL, Sys.time(), request, "requested", NULL, NULL, 
        sep=",") 
    cat(paste(log_record, "\n", sep=""), file=log_file_name, append=T) 

    lhs <- data.frame(a=unlist(a), 
       b=unlist(b), 
       c=unlist(c)) 

    pairs <- custom_function(lhs, rhs, m_w = 0.98, 
           ext_blk_field=c(12), international=T, 
           fasterWcoBlock=T, preprocessedData2=T) 
    input_records=nrow(lhs) 
    matches=nrow(pairs) 
    query_time <- as.numeric(as.POSIXct(Sys.time())) - start_time 
    status <- data.frame(query_time=query_time, 
        request=request, 
        type='POST', 
        api_version=api_version_v1) 

    log_record <- paste(NULL, Sys.time(), request, "responded", 
        round(matches/input_records*100, 2), 
        paste0(matches, '/', input_records, ' in ', query_time), 
        sep=",") 
    cat(paste(log_record, "\n", sep=""), file=log_file_name, append=T) 

    return(list(data=pairs, status=status)) 
} 

Toute aide est très appréciée.

+0

De quoi parlez-vous exactement ici? Où essayez-vous d'obtenir une adresse IP? S'il vous plaît essayez de préparer un minimum [exemple reproductible] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) qui montre du code que vous avez et décrit ce que vous avoir besoin. – MrFlick

+2

Puisque 'plumber' utilise [' httpuv'] (https://github.com/rstudio/httpuv), il est possible que vous puissiez atteindre le ['req $ REMOTE_ADDR'] (https://github.com/rstudio/httpuv/recherche? utf8 =% E2% 9C% 93 & q = remote_addr & type =) propriété du descripteur de requête. – r2evans

+0

Merci @ r2evans qui a travaillé ... –

Répondre

3

Pour clore la question, je vais reformuler le commentaire:

Depuis plombier utilise httpuv, il est possible que vous pouvez accéder à la propriété req$REMOTE_ADDR de la poignée de demande.