質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
GraphQL

GraphQL は、アプリケーション・プログラミング・インタフェース (API) 向けのクエリ言語およびサーバーサイドランタイムです。APIの速度、柔軟性、開発者にとっての使いやすさを向上させるために設計され、データを複数のデータソースから取得するリクエストを1つのAPI呼び出しで構成できます。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Q&A

解決済

1回答

1131閲覧

swift(iPhone)からGraphQL形式でリクエストを投げる

ryohasegawa

総合スコア437

GraphQL

GraphQL は、アプリケーション・プログラミング・インタフェース (API) 向けのクエリ言語およびサーバーサイドランタイムです。APIの速度、柔軟性、開発者にとっての使いやすさを向上させるために設計され、データを複数のデータソースから取得するリクエストを1つのAPI呼び出しで構成できます。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

0グッド

0クリップ

投稿2021/05/31 02:46

やりたいこと

graphql

1query { 2 getAll(uuid: "12345") 3}

このクエリを投げてデータを取得したいです。

書いたコード

swift

1let url = URL(string: "http://192.168.100.16:8200/graphl.php") 2var request = URLRequest(url: url!) 3request.httpMethod = "POST" 4request.addValue("application/json", forHTTPHeaderField: "content-type") 5let query = "query{getAll(uuid:\"12345\")}" 6var uploaddata:Data? = nil 7do{ 8 uploaddata = try JSONEncoder().encode(query) 9}catch{ 10 11} 12 13let task = URLSession.shared.uploadTask(with: request, from: uploaddata) {data, response, err in 14 if err != nil{ 15 print("エラー") 16 } 17 print("レスポンス:", response!) 18} 19task.resume()

このコードを実行のlogが下です。

log

1レスポンス: <NSHTTPURLResponse: 0x28383b5a0> { URL: http://192.168.100.16:8200/graphl.php } { Status Code: 200, Headers { 2 "Access-Control-Allow-Origin" = ( 3 "*" 4 ); 5 Connection = ( 6 "Keep-Alive" 7 ); 8 "Content-Encoding" = ( 9 gzip 10 ); 11 "Content-Length" = ( 12 176 13 ); 14 "Content-Type" = ( 15 "text/html; charset=UTF-8" 16 ); 17 Date = ( 18 "Mon, 31 May 2021 02:36:17 GMT" 19 ); 20 "Keep-Alive" = ( 21 "timeout=5, max=100" 22 ); 23 Server = ( 24 "Apache/2.4.38 (Debian)" 25 ); 26 Vary = ( 27 "Accept-Encoding" 28 ); 29} } 30

ステータスは200なので問題なく通信はできていると思うのですが、データが帰ってきてないので、GraphQLのクエリの投げ方に問題があると思います。
正しい投げ方を教えていただけると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomato879241

2021/05/31 04:28

GraphQLが何なのか知りませんが、JSONのdataはJSONSerializationしたものをURLRequestのhttpBodyに渡すのでは?
ryohasegawa

2021/05/31 04:53

ありがとうございます。
guest

回答1

0

自己解決

swift

1let url = URL(string: "http://192.168.100.16:8200/graphl.php") 2var request = URLRequest(url: url!) 3request.httpMethod = "POST" 4request.addValue("application/json", forHTTPHeaderField: "content-type") 5 6do{ 7 // クエリをサーバーに投げる 8 request.httpBody = try JSONEncoder().encode(["query":"query{getAll(uuid:\"1234\")}"]) 9 10}catch{ 11 print("エラー") 12} 13// print("データ",uploaddata!) 14 15 16let task = URLSession.shared.uploadTask(with: request, from: nil) {data, response, err in 17if err != nil{ 18 print("エラー") 19} 20// print("response: (response!)") 21print(String(data: data!, encoding: .utf8)!) 22} 23task.resume()

とすると、graphqlのクエリが送信できました。

投稿2021/05/31 04:52

ryohasegawa

総合スコア437

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問