NEW: Learn SwiftUI with my free YouTube video series! >>

Kitura 2.0 released, adds codable routing

Now you can make simple web APIs the fast, Swifty way

Paul Hudson       @twostraws

IBM has released a major update to its Kitura server project, delivering new features that take advantage of Swift 4’s Codable protocol, new command-line tools, and new commercial support for Swift on Linux.

Easily the most fascinating feature of Kitura 2.0 is its use of codable routing, which makes it trivial to add JSON-based web APIs to get and post data. In fact, as long as your custom data types support Codable, you’re only a few lines of code away from adding support for common operations such as listing all items, finding a specific item by its identifier, and creating a new item from submitted values.

Of course, it’s easy to write that, but what you really want is a code example so you can see codable routing for yourself. Well, it’s lucky for you that I just updated my Server-Side Swift book for Kitura 2, so here’s a small slice from the chapter on codable routing:

// create a simple data type that conforms to Codable
struct Singer: Codable {
    var name: String
    var age: Int

// create an array of values so we have something to work with
var singers = [
    Singer(name: "Taylor Swift", age: 27),
    Singer(name: "Justin Bieber", age: 23),
    Singer(name: "Ed Sheeran", age: 26)

// create a route that returns all singers
router.get("/singers/all") {
    (completion: ([Singer]?, RequestError?) -> Void) in
    completion(singers, nil)

All the magic is done at the end: by adding a route with a specific completion handler, the Kitura router is able to understand that we’ll return an array of a specific codable type, and handle the JSON sending automatically.

Codable routing makes it a cinch to implement create, read, update, and delete (CRUD) in your web API, which is a huge step forward. However, even better is the addition of the all-new KituraKit framework, which is a client-side framework to perform the flip side of the equation: it converts your models to JSON so they can be sent to your server. The combination of these two new features means you can finally share your model code between client and server, and never need to worry about encoding and decoding again.

As you might imagine, codable routing is aimed squarely at making it substantially easier to build web APIs. At the same time, though, it makes it substantially Swiftier – if you’re lucky enough that codable routing does everything you need, you can build web APIs in Swift without ever worrying about the underlying data that’s being transferred, which will definitely lower the learning curve for many.

You can find out more about Kitura 2.0, codable routing, and KituraKit at the official announcement. You might also be interested in my Server-Side Swift book, which was just updated for Kitura 2.0.

LEARN SWIFTUI FOR FREE I wrote a massive, free SwiftUI tutorial collection, and also have a growing list of free SwiftUI tutorials on YouTube – get started today!

Buy Testing Swift Buy Practical iOS 12 Buy Pro Swift Buy Swift Design Patterns Buy Swift Coding Challenges Buy Server-Side Swift (Vapor Edition) Buy Server-Side Swift (Kitura Edition) Buy Hacking with macOS Buy Advanced iOS Volume One Buy Advanced iOS Volume Two Buy Hacking with watchOS Buy Hacking with tvOS Buy Hacking with Swift Buy Dive Into SpriteKit Buy Swift in Sixty Seconds Buy Objective-C for Swift Developers Buy Beyond Code

About the author

Paul Hudson is the creator of Hacking with Swift, the most comprehensive series of Swift books in the world. He's also the editor of Swift Developer News, the maintainer of the Swift Knowledge Base, and a speaker at Swift events around the world. If you're curious you can learn more here.

Was this page useful? Let us know!