「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[通信技術]] > [[HTTP]] --[[その他、開発の色々]] * 目次 [#k59df800] #contents *概要 [#ab7a22c7] WebAPIに関する情報リンクを纏めています。 *詳細 [#l985a69b] **インターフェイス [#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]], [[:ASP.NET SPA]]