具有多个参数的蒸汽

Vapor with multiple parameters

我在处理多个参数时遇到问题。我可以通过一个,但不确定是否要通过多个。我在网页中有这个 JS 代码:

$.getJSON('api/vendor/countryVendors/'+country+'&'+resourceType,    function(result){} 

以及我的 Vapor 控制器中的以下内容:

func getcountryVendors(_ req: Request) throws -> Future<[Vendor]> {
    let countryString = try req.parameters.next(String.self)
    let resourceTypeString = try req.parameters.next(String.self) 

不确定我创建的 URL 是错误的还是我的 Swift 代码或两者都是错误的

您似乎正试图传入 query-string parameters, which are different from the route path parameters。在这种情况下,两个片段都是错误的。

查询字符串参数是 key/value 对,附加到 URL 的末尾,如下所示:

/my/url/path?key=value&key1=value1

因此您的 JS 代码中的 URL 应该如下所示:

'api/vendor/countryVendors?country='+country+'&resourceType='+resourceType

要从传递给路由处理程序的 URL 获取查询字符串参数,您可以使用 request.query 属性 和 .get(_:at:) 方法:

func getcountryVendors(_ req: Request) throws -> Future<[Vendor]> {
    let countryString = try req.query.get(String.self, at: "country")
    let resourceTypeString = try req.query.get(String.self, at: "resourceType") 

    // Other code...
}