LINE BOTを作ってみてVaporのDropletのHTTP Client使えそうだと思ったので、そこだけ切り離して使って見ます。

  • Swift 4.0.3
  • Vapor 2.4.0

です。

VaporをHTTPリクエストだけに利用するのは大きすぎるので、HTTPリクエストだけするライブラリでServer Side Swiftでよく使われるライブラリって何があるのか知りたいです。

HTTPリクエストの練習で天気はよく使います。

土善旅館周辺の天気

ライブドアの天気APIです。

http://weather.livedoor.com/weather_hacks/webservice

土善旅館は千葉の東の方なので、用意されてて近い場所は銚子みたいですね。

http://weather.livedoor.com/forecast/webservice/json/v1?city=120020

実装

フォルダ作って移動

$ mkdir tenki
$ cd tenki

初期化、このコマンド省略系の書き方できないのかな...

$ swift package init --type executable
Package.swift
// swift-tools-version:4.0
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "tenki",
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        .package(url: "https://github.com/vapor/vapor.git", from: "2.4.0")
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages which this package depends on.
        .target(
            name: "tenki",
            dependencies: ["Vapor"]),
    ]
)

main.swift
import Vapor

let drop = try Droplet()
let endpoint = "http://weather.livedoor.com/forecast/webservice/json/v1?city=120020"
let res: Response = try drop.client.get(endpoint)

let mes = res.data["description"]?.object?["text"]?.string
print(mes)

[WIP]まだJSONの扱い方が怪しいのでもう少し調べたい

実行

$./.build/x86_64-unknown-linux/debug/tenki
Could not load config files from: /home/n0bisuke/myswift/tenki/Config/
Try using the configDir flag
ex: .build/debug/Run --configDir=/absolute/path/to/configs
The default hash should be replaced before using in production.
The default cipher should be replaced before using in production.
Optional(" 西日本から東日本にかけて高気圧に覆われています。\n\n 千葉県は、晴れや曇りとなっています。\n\n 21日は、高気圧に覆われますが、上空の気圧の谷や寒気の影響により、\n晴れ時々曇りとなるでしょう。\n \n 22日は、低気圧が発達しながら伊豆諸島を通過するため、曇りで、昼過\nぎから北西部では雪か雨、北東部と南部では雨となる見込みです。\n\n 太平洋沿岸では、21日は、うねりを伴い波がやや高いでしょう。22日\nは、波が高い見込みです。船舶等は注意してください。")

西日本から東日本にかけて高気圧に覆われています。\n\n 千葉県は、晴れや曇りとなっています。\n\n 21日は、高気圧に覆われますが、上空の気圧の谷や寒気の影響により、\n晴れ時々曇りとなるでしょう。\n \n 22日は、低気圧が発達しながら伊豆諸島を通過するため、曇りで、昼過\nぎから北西部では雪か雨、北東部と南部では雨となる見込みです。\n\n 太平洋沿岸では、21日は、うねりを伴い波がやや高いでしょう。22日\nは、波が高い見込みです。船舶等は注意してください。

とのことです。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.