Search code examples
swiftapivapor

How to make a third party api call in Vapor 3?


I'd like to make a post call with some parameters in Vapor 3.

POST: http://www.example.com/example/post/request

title: How to make api call
year: 2019

Which package/function can be used?


Solution

  • It's easy, you could do that using Client like this

    func thirdPartyApiCall(on req: Request) throws -> Future<Response> {
        let client = try req.client()
        struct SomePayload: Content {
            let title: String
            let year: Int
        }
        return client.post("http://www.example.com/example/post/request", beforeSend: { req in
            let payload = SomePayload(title: "How to make api call", year: 2019)
            try req.content.encode(payload, as: .json)
        })
    }
    

    or e.g. like this in boot.swift

    /// Called after your application has initialized.
    public func boot(_ app: Application) throws {    
        let client = try app.client()
        struct SomePayload: Content {
            let title: String
            let year: Int
        }
        let _: Future<Void> = client.post("http://www.example.com/example/post/request", beforeSend: { req in
            let payload = SomePayload(title: "How to make api call", year: 2019)
            try req.content.encode(payload, as: .json)
        }).map { response in
            print(response.http.status)
        }
    }