Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

とのことです。

n0bisuke
プロトタイピング専門スクール「プロトアウトスタジオ」で教えたりしてます。 プロフ -> https://dotstud.io/members/n0bisuke
https://protoout.studio
dotstudio
全ての人がモノづくりを楽しむ世界を目指して活動しています。
https://dotstud.io
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした