Server Side Swift with Vapor · Challenge: Create Your Own Routes |

This is a companion discussion topic for the original entry at

In this challenge I get the following error when creating the user-info route:

Value of type 'Int' required for key 'age'.

Swift 5.2
Vapor 4

The issue goes away if I make the age property a String, but I don’t think that is the right approach here?

// ..."user-info") { req -> String in
        let data = try req.content.syncDecode(UserData.self)

        return "Hello \(, you are \(data.age)"

// ...

struct UserData: Content {
    let name: String
    let age: Int

It would seem this is an input issue, where Vapor is not typecasting the posted value to Int, as HTTP is not type-aware and everything is treated as a string?

@mikebronner how are you sending the request? In JSON there’s a difference between

"age": 99


"age": "99"

The second one provides the String, whereas your code is expecting an Int. Yes they’re essentially the same, but that’s what Codable looks for and why you’re getting an error

1 Like

Tim, you’re absolutely right. I forgot to check my API request. Thanks!!

1 Like