用Swift 写服务端

作者: 若非长得丑怎会做逗比 | 来源:发表于2016-10-05 01:20 被阅读2927次

    Perfect 好像这个是最早面世的服务端框架 Perfect 中文文档
    Vapor Vapor 文档
    IBM开源 Kitura
    Zewo

    就拿Vapor来上手吧

    • 首先使用xcode创建一个命令行工程
    • 在工程目录下 创建 Sources Config文件夹和Package.swift并把工程默认的main.swift移到Sources
    • 打开Package.swift写下如下代码
    import PackageDescription
    
    let package = Package(
        name: "demo",
        dependencies: [
            .Package(url: "https://github.com/vapor/vapor.git", majorVersion: 1)
        ]
    )
    
    • 打开terminal进入工程目录,也就是和Package.swift同级目录,执行
    swift build
    
    • 首先会去下载相关依赖的源文件进行编译
    Snip20161005_5.png Snip20161005_6.png Snip20161004_2.png Snip20161004_3.png Snip20161005_7.png

    Vapor至此已经安装好了,可以开始编写代码,至于用啥IDE呢 这个就看个人喜好了 你可以用Atom SublimeText 当然也可以用 Vim等等文本编辑器,我这里就采用Xcode,不过还需要设置一下,不然会报错,也没用代码提示功能

    • 使用Xcode打开工程,如图设置
    Snip20161005_8.png
    • 开始写代码,打开main.swift
    //
    //  main.swift
    //  demo
    //
    //  Created by king on 16/10/4.
    //  Copyright © 2016年 king. All rights reserved.
    //
    
    import Foundation
    // 导入Vapor
    import Vapor
    
    // 创建一个 app
    let app = Droplet()
    
    // 创建一个API,path为hello
    app.get("hello") { request in
        
        // 从请求中提取参数
        guard let name = request.data["name"]?.string else {
            // 如果提取不到,则返回一个失败的请求
            throw Abort.badRequest
        }
        // 提取成功,返回json数据
        // JSON 是一个结构体
        // Node 是一个枚举
        // JSON(Node.object(["result" : Node.string("Hello, \(name)!")])) 返回一个object
        return JSON(Node.object(["result" : Node.string("Hello, \(name)!")]))
    }
    
    // 运行app
    app.run()
    
    • 打开terminal,进入工程根目录,运行如下命令
    .build/debug/demo
    
    • 启动成功,如图
    Snip20161005_10.png
    • 打开浏览器,输入0.0.0.0:8080/hello?name=king 或者 127.0.0.1:8080/hello?name=king
    Snip20161005_9.png
    • 当没有输入name参数时,就是一个失败的页面
    Snip20161005_11.png

    默认的端口是8080 如何改变它呢

    • 进入开始创建的Config文件夹创建一个severs.json
    {
      "http": {
        "host": "0.0.0.0", // 主机地址
        "port": 80 // 端口 设置为80 则不需要在API 后面跟上端口
      }
    }
    
    • terminal执行
    sudo .build/debug/demo 
    
    • 然后就不再需要跟上端口了
    Snip20161005_12.png
    • 先简单的玩玩,在慢慢去深入,该睡觉了

    推荐:不服跑个分 - 顶级 Swift 服务端框架对决 Node.js

    相关文章

      网友评论

        本文标题:用Swift 写服务端

        本文链接:https://www.haomeiwen.com/subject/qdesyttx.html