LoginSignup
1

More than 5 years have passed since last update.

Server Side Swiftで土善旅館周辺の天気を知る #love_swift

Last updated at Posted at 2018-01-21

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は、波が高い見込みです。船舶等は注意してください。

とのことです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1