[swift-server-dev] HTTP API Review

Chris Bailey BAILEYC at uk.ibm.com
Mon Aug 21 14:53:55 CDT 2017


The HTTP part of the Swift Server API project has undergone a number of 
iterations and updates, and I believe its approaching the point that we 
have sufficient function for use to raise a Swift Evolution "Pitch" and 
give the wider user community and opportunity to try out the APIs and 
provide some early feedback.

The main documentation for the HTTP API is now available via GitHub Pages 
here:
        https://swift-server.github.io/http/
which describes the use of a "WebApp" to handle an incoming HTTPRequest 
and build a response.

The main item that's missing is a minimal set of APIs to create the HTTP 
server itself, and to rename the "WebApp" to something better. The 
following PR from Ian Partridge proposes to do that:
        https://github.com/swift-server/http/pull/26

This renames "WebApp" to "HTTPRequestHandler" provides a 
"SimpleHTTPServer" implementation with start() and stop() functions. This 
means you can create and run a simple server with the following:

class SimpleHandler: HTTPRequestHandling {
    func handle(request: HTTPRequest, response: HTTPResponseWriter ) -> 
HTTPBodyProcessing {
        response.writeHeader(status: .ok, headers: ["Transfer-Encoding": 
"chunked", "X-foo": "bar"])
        return .processBody { (chunk, stop) in
            switch chunk {
            case .chunk(let data, let finishedProcessing):
                response.writeBody(data) { _ in
                    finishedProcessing()
                }
            case .end:
                response.done()
            default:
                stop = true
                response.abort()
            }
        }
    }
}

let server = SimpleHTTPServer()

try! server.start(port: 0, handler: SimpleHandler().handle)

Please take a look and provide feedback, for example, suggesting that 
SimpleHTTPServer should just be HTTPServer ;-)

Thanks,

Chris
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-server-dev/attachments/20170821/61fe34a9/attachment.html>


More information about the swift-server-dev mailing list