【问题标题】:Swift sending 'map' as query parameterSwift 发送“地图”作为查询参数
【发布时间】:2018-10-16 15:52:09
【问题描述】:

这是一个简单的问题,但我不知道该怎么做。我有一个如下所示的 Java 后端:

@RequestMapping(value = "/batch", method = RequestMethod.GET)
public List<EventElasticsearchDTO> getBatch(
        @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize,
        @RequestParam(value = "paginationToken", required = false, defaultValue = "0") Integer paginationToken,
        @RequestParam(value = "lat") Double latitude,
        @RequestParam(value = "long") Double longitude,
        @RequestParam Map<String, String> queryOptions) throws IOException {...}

我的问题是,在 Swift 中,我如何发送 queryOptions 参数。否则,如果我的 url 看起来像这样:https://api.example.net/api/event/batch?paginationToken=5&amp;long=-165.0312186&amp;lat=45.33233141,那么当我添加 queryOptions 时它应该是什么?

已经在使用 URLQueryComponents。我想知道如何使用 URLQueryComponents 发送地图。

if let queryParams = queryParams {
  components.queryItems = queryParams.map { (key, value) -> URLQueryItem in
    URLQueryItem(name: key, value: value)
  }
}

谢谢!

【问题讨论】:

  • 你检查过URLComponentsURLQueryItems
  • 你想用queryOptions发送什么?
  • 说我只想发送 ["maxItems" : "1000000"]
  • 看来你有代码。你的问题是什么?代码没有按您的意愿运行吗?

标签: swift spring


【解决方案1】:

Map&lt;String, String&gt; queryOptions 用于将所有参数s 保存为Map。您只需要发送一个额外的参数,服务器端就会将其放入queryOptions,并附上其名称:

//`queryParams` may be a parameter to some method, here just to show how to do it...
let queryParams: [String: String]? = [
    "paginationToken": "5",
    "long": "-165.0312186",
    "lat": "45.33233141",
    "maxItems": "1000000", //<- Just add it
]

if let queryParams = queryParams {
    components.queryItems = queryParams.map { (key, value) -> URLQueryItem in
        URLQueryItem(name: key, value: value)
    }
}

在您的服务器端,除了命名参数之外的所有参数都放入queryOptions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多