「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>通信技術]]
-戻る
--[[通信技術]] > [[HTTP]]
--[[その他、開発の色々]]

* 目次 [#k59df800]
#contents

*概要 [#ab7a22c7]
WebAPIに関する情報リンクを纏めています。

*[[REST]] [#f3bf594e]
*[[JSON]] [#uaf487cb]
*[[クロス ドメイン接続]] [#m3ca699c]
*[[WebAPIの認証]] [#x3413d74]
*[[非同期処理]] [#o4ddd0fc]
*詳細 [#l985a69b]

*[[ASP.NET]] [#k723a586]
**[[ASP.NET Web Service]] [#z7244f64]
**[[WCF]] (Windows Communication Foundation) [#w4b2a2bb]
**[[ASP.NET Web API]] [#d868dd17]
**インターフェイス [#n18dbd88]

***[[SOAP]] [#jc1a804d]
-[[XML>#d17c877b]]であり、古い。
-新規採用は、ほぼ、無い。

***[[REST]] [#f3bf594e]
-HTTPメソッドのリクエストと、
-[[JSON>#uaf487cb]]、[[XML>#d17c877b]]のレスポンス

***[[Swagger (OpenAPI)]] [#s6662154]
-[[REST>#f3bf594e]]の[[JSON>#uaf487cb]]系を発展させた。
-パラメータ付きの URL テンプレート+HTTP へのカスタム マッピング

***[[gRPC]] [#t94d6bdd]
-バイナリ電文([[Protocol Buffers>#o9b67f9e]])
-IDLがあるらしい。
-互換ライブラリが揃っている。

***[[GraphQL]] [#y24afe94]
-データクエリとデータ操作をするリクエスト。
-上記の結果を返す、[[JSON>#uaf487cb]]のレスポンス

-実装は、Schemaクラスを定義し、Queryクラスに以下を実装する。

***[[OData]] [#d76a035d]
-[[XML>#d17c877b]]、[[XML-RPC>RPC#fdad3f1c]]版の[[GraphQL>#y24afe94]]
-[[Dynamics]]系で採用されている([[Graph API]])。

***何を選択するか? [#ea432ea2]
-好きなのを使えば良いと思いますが、~
以下(参考)を見て、自分は、

--「リクエストは、POST(form or json)
--レスポンスは、[[JSON>#uaf487cb]]で良くない?」

>派だと思いました(≒[[JSON-RPC>RPC#g8bee649]])。

--[[REST]]設計に悩むようであれば、拘らず、[[JSON-RPC>RPC#g8bee649]]で造ってしまえば良い。~
(「WWWブラウザから、URL直打ちのGETで[[JSON>#uaf487cb]]レスポンスを確認したい。」などの要件が無ければ)

--何故か?と言うと、以下の辺りが根拠になっていると思います。
---[[相互運用可能なBeanが生成される仕組み>JSONのparseを色々試してみた。#y3ecc544]]がアレばイイかな?と思います。
---コレは、RFCなどで標準化はされていませんが、[[JSON>#uaf487cb]]パーサーの仕様が、~
言語間で似通っているため、安定して出来る芸当になっているのだと思います。

-参考
--API 設計: gRPC、OpenAPI、REST の概要と、それらを使用するタイミングを理解する | Google Cloud Blog~
https://cloud.google.com/blog/ja/products/api-management/understanding-grpc-openapi-and-rest-and-when-to-use-them
--API 設計ガイダンス - Best practices for cloud applications | Microsoft Docs~
https://docs.microsoft.com/ja-jp/azure/architecture/best-practices/api-design

**ペイロード [#n84896e1]

***[[XML]] [#d17c877b]
-リクエストにも[[XML]]を使うと、[[SOAP]]
-RESTでの[[XML>#f3bf594e]]の採用は減ってきている。

***[[JSON]] [#uaf487cb]
リクエストにも[[JSON]]を使うと、[[JSON-RPC>RPC#g8bee649]]

***[[MessagePack]] [#df0a9ae0]
***[[Protocol Buffers]] [#o9b67f9e]
***[[CBOR]] [#q54548e5]

**その他 [#y273e634]
***[[クロス ドメイン接続]] [#m3ca699c]
***[[WebAPIの認証]] [#x3413d74]
***[[API Gateway]] [#yd690707]

**ツール [#zbd74814]
***[[cURLコマンド]] [#ia62f4b3]
***[[Postman]] [#n0186e77]

*[[.NET開発]] [#z73f28e5]
**[[HttpClientの類の使い方]] [#wa3bf61e]
**[[ASP.NET]] [#k723a586]
***[[ASP.NET Web Service]] [#z7244f64]
***[[WCF]] (Windows Communication Foundation) [#w4b2a2bb]
***[[ASP.NET Web API]] [#d868dd17]

----
Tags: [[:プログラミング]], [[:通信技術]], [[:.NET開発]], [[:.NET Core]], [[:ASP.NET]], [[:ASP.NET Web API]]
Tags: [[:プログラミング]], [[:通信技術]], [[:.NET開発]], [[:.NET Core]], [[:ASP.NET]], [[:ASP.NET Web API]], [[:ASP.NET SPA]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS