簡體   English   中英

為 R 水管工在 Swagger 中添加帶有默認值的任意 http 標頭

[英]Adding arbitrary http headers with defaults in Swagger for R Plumber

我已將不記名令牌授權添加到我的 Swagger(使用 Plumber 創建),使用此處的解決方案

現在我想添加作為請求一部分的任意標頭。 我的水管工部署由 React 儀表板使用,其中解析req$HTTP_TENANT為我提供了所需的值。 這是我想在 Swagger 中重新創建的。

考慮這個例子:

library(plumber)

r <- plumber::pr("plumber.R") %>%
  plumber::pr_set_docs("swagger") %>%
  plumber::pr_set_api_spec(function(spec) {
    spec$components$securitySchemes$bearerAuth$type <- "http"
    spec$components$securitySchemes$bearerAuth$scheme <- "bearer"
    spec$components$securitySchemes$bearerAuth$bearerFormat <- "JWT"
    spec$security[[1]]$bearerAuth <- ""
    
    spec$components$parameters$HTTP_TENANT <- "HTTP_TENANT"
    spec$parameters[[1]]$HTTP_TENANT <- "Customer name"
    
    spec
  })

r %>% plumber::pr_run(port = 8000, host = '0.0.0.0')

這給出了以下結果:

Plumber's Swagger 中的工作授權

  1. 如何請求任意標頭,例如HTTP_TENANT ,可能在 Bearer 令牌輸入下方鍵入? 它也可能在 Swagger 頂部的其他地方。
  2. 如何為標頭提供默認值,例如Customer name ,還有 Bearer 令牌(即可以從 R 以編程方式輸入)?

在 Swagger 中,可以在 API 端點添加一個參數,並將“in”屬性更改為“header”,以請求任何 header,例如 HTTP_TENANT。 例如:

spec$paths$"/endpoint"$get$parameters[[1]]$name <- "HTTP_TENANT"
spec$paths$"/endpoint"$get$parameters[[1]]$in <- "header"
spec$paths$"/endpoint"$get$parameters[[1]]$description <- "Customer name"

因此,在 Swagger UI 的“參數”部分下,將添加“HTTP_TENANT”header 的輸入字段。

參數 object 的“默認”屬性可以添加到標頭以提供默認值。 例如:

spec$paths$"/endpoint"$get$parameters[[1]]$default <- "customer1"

默認值也可以通過從外部源(如配置文件)讀取它們或通過使用 R package 處理身份驗證(如 httr)自動處理不記名令牌來以編程方式設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM