SwiftyHTTP, 在'pure'Swift中,一个基于HTTP客户机和服务器

分享于 

4分钟阅读

GitHub

  繁體 雙語
A simple GCD based HTTP client and server, written in 'pure' Swift
  • 源代码名称:SwiftyHTTP
  • 源代码网址:http://www.github.com/AlwaysRightInstitute/SwiftyHTTP
  • SwiftyHTTP源代码文档
  • SwiftyHTTP源代码下载
  • Git URL:
    git://www.github.com/AlwaysRightInstitute/SwiftyHTTP.git
    Git Clone代码到本地:
    git clone http://www.github.com/AlwaysRightInstitute/SwiftyHTTP
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/AlwaysRightInstitute/SwiftyHTTP
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    SwiftyHTTP

    注意:如果你需要一个 Swift 网络工具集,我可以能不再更新这一点,请考虑: Noze.io

    用于 Swift的简单的基于列表的HTTP库。 这里项目是'纯'swift/c,它不使用任何桥接的objective-c 类。

    SwiftyHTTP是关于如何将 Swift 与原始C api集成的演示。 比实际使用实际项目中的代码来窃取 Swift 编码的想法更为。 在大多数实际的Swift 应用中,你可以访问 Cocoa,使用它。

    笔记: 这只是我的第二个 Swift 项目。 关于如何改进代码的任何建议都欢迎。 我需要大量的和大量的:

    首先是 : 样例

    服务器:

    let httpd =HTTPServer()
    . onRequest {
     rq, res, con in res.bodyAsString="<h2>Always Right, Never Wrong!</h2>" con.sendResponse(res)
     }
    . listen(1337)

    使用 node.js 像连接奖金类的服务器:

    let httpd =Connect()
    . use { rq, res, _, next inprint("(rq.method)(rq.url)(res.status)")
     next()
     }
    . use("/hello") { rq, res, con, next in res.bodyAsString="Hello!" con.sendResponse(res)
     }
    . use("/") { rq, res, con, next in res.bodyAsString="Always, almost sometimes." con.sendResponse(res)
     }
    . listen(1337)

    客户端( 不要使用这个,使用 NSURLSession ): !

    GET("http://www.apple.com/")
    . done {
     print()
     print("request ($0)")
     print("response ($1)")
     print("body:n($1.bodyAsString)")
     }
    . fail {
     print("failed ($0): ($1)")
     }
    . always { print("---") }

    目标

    已经更新为使用 Swift v0.2.2 ( 又名 Xcode 7.3 )。

    项目包括三个目标:

    • SwiftyHTTP
    • SwiftyServer
    • SwiftyClient

    我建议你先看看 SwiftyServer。

    SwiftyHTTP

    包含HTTP类和相关扩展的框架。 它有几个'子项目':

    • 基础
    • 插座
    • 解析器
    • HTTP
    基础

    这只包含'rawbytebuffer'类。 这有点像 UInt8 array。 我打赌有更好的方法来实现这个 ! 请推荐一些: - ) !

    还有一些高效率的- 在字符串和字符串之间转换的扩展。 我也希望对这些也有一些建议。

    但请记住:NSxyz在这个风险中是禁止的 ! :- )

    套接字

    我希望GIT具有正确的外部;- ) ( https://github.com/AlwaysRightInstitute/SwiftSockets )

    解析器

    这使用了 node.js 中也使用的C 解析器。 它必须修改tinsy位- Swift C 桥不支持 bitfields。 这些必须从http_parser结构中删除。

    它还包含主要请求/响应类: rtc和 of,HTTPMessage的两个子类。 HTTP状态值的枚举( 像


    相关文章