#author("2023-01-20T02:01:21+00:00","default:admin","admin") #author("2023-01-20T02:25:08+00:00","default:admin","admin") -[[基礎から分かるAPI管理:https://techtarget.itmedia.co.jp/tt/series/9626/]] *プロトコル [#kaf556ef] -[[REST、gRPC、および GraphQL を使い分ける (パート 1):https://www.xlsoft.com/jp/blog/blog/2022/05/25/post-29393/]] -[[REST、gRPC、および GraphQL を使い分ける (パート 2):https://www.xlsoft.com/jp/blog/blog/2022/06/02/post-29512/]] -[[gRPCとGraphQL:https://qiita.com/hitochan777/items/7ecc11e77fa89be009d3]] -[[GraphQLとgRPCとRESTの長所と短所:https://morioh.com/p/5a36922b0c1d]] -[[gRPCとGraphQLのマイクロサービスでの使われ方とBFFの技術選定について:https://qiita.com/shingo02/items/2beb5200e07b97c0e805]] -[[APIを知ったかぶり→話せるに変えるための5分:https://note.com/kimken_acweb/n/ndec3fc43f27b]] -[[GraphQL と gRPC で通信する Go 製のマイクロサービスをセットアップする:https://qiita.com/takano-h/items/702ec2aef53a8c756690]] **REST [#n6b80a33] -[[Wikipedia - REST:http://ja.wikipedia.org/wiki/REST]] -[[ThinkIT - RESTなWebサービスの利用/開発:http://thinkit.jp/article/1097/1/]] -[[CodeZine - Jersey、AJAX、JSONを使ってRESTに挑戦しよう:http://codezine.jp/article/detail/4596]] **gRPC [#ye3d20c0] -リモート プロシージャ コールの一般的な概念を進化させた gRPC では、クライアントはリモート コンピューター上のメソッドを、そのシステムがローカルであるかのように直接呼び出すことができます。 -gRPC はプロトコル バッファー (または Protobufs) を利用して、テキストベースの JSON や XML ではなく、バイナリにシリアル化されたデータでタイプセーフなデータ転送インターフェイスを定義します。 -HTTP/1 よりも信頼性が高く、高速で効率良い HTTP/2 を利用しています。 -gRPC はデータのシリアル化に Protobufs を使用することで、非常に軽量で高速な API を提供します。非常に軽量であるため、gRPC はクライアントの計算能力が限られている場合 (IoT など) によく使われます。このような場合、サーバーが負荷の高い処理を行います。 -gRPC の言語に依存しないインターフェイス コントラクトの定義は、異なる言語で記述されたサービス間に優れた通信方法を提供します。gRPC の学習曲線は、REST ほど浅くはないものの、十分に許容できるものです。 -gRPC は非常に効率的ですが、ブラウザーで十分にサポートされているわけではありません。また、サンドボックスで実験しながら学習するのは難しく、HTTP/2 の使い方も、経験の浅い API 開発者には馴染みのないものでしょう。 -gRPC はスマート デバイス間の通信の促進に広く使用されています。サイズ、限られた計算リソース、リアルタイム機能の必要性から、IoT デバイスの動作は gRPC のパフォーマンスに依存しています。 -gRPC は、デプロイメント パイプライン ツールやアプリケーション モニタリング システムにも適しています。 **SOAP [#m4441dae] *** 各言語毎のツール [#s1b5cc81] -PHP --[[NuSOAP:http://sourceforge.net/projects/nusoap/]] --[[Pear:http://pear.php.net/]] -Java --[[Apache Axis:http://ws.apache.org/axis/]] --[[Apache WSS4J:http://ws.apache.org/wss4j/]] -Python --[[SOAPPy:http://pywebsvcs.sourceforge.net/]] -Perl --[[SOAP::Lite:http://www.soaplite.com/]] * データフォーマット [#s34ecead] ** JSON [#t5636b19] ** JSONP [#a82f088a] -[[JSONPを使ってJavaScriptだけでマッシュアップ:http://techblog.yahoo.co.jp/cat207/web_1/jsonpjavascript/]] -[[JSONP によるクロスドメインの通信: 第 1 回 JSONP と jQuery を組み合わせ、強力なマッシュアップを迅速に作成する:http://www.ibm.com/developerworks/jp/web/library/wa-aj-jsonp1/]] -[[入門 JSON 3 -- JSONP とコールバック関数:http://www.baldanders.info/spiegel/remark/archives/000222.shtml]] -[[ここが危ない!Web2.0のセキュリティ - 第3回 JSONPでのクロスドメインアクセス:http://gihyo.jp/dev/serial/01/web20sec/0003]] -[[教科書に載らないWebアプリケーションセキュリティ - 第4回[気になる]JSONPの守り方:http://www.atmarkit.co.jp/fcoding/articles/webapp/04/webapp04a.html]] ** XML [#g7e2c4b0] ** YAML [#vd414a5a] ** PHPserialize [#b1433059] -[[PHP SERIALIZEのススメ:http://techblog.yahoo.co.jp/web/yahoo/post_1/]] -Yahoo! のAPIで使用している -[[ライブラリを利用することで、他の言語(C#, perl など)でも PHP serialize は読み込むことが可能:http://www.ecoop.net/memo/2006-07-14-1.html]] -[[Yahoo曰く、XMLじゃなくてPHPの変数をそのままシリアライズして返せばいいじゃん:http://neta.ywcafe.net/000544.html]] ** Protocol Buffers [#g5aa7826] -[[グーグル、XMLに代わるデータ交換ツール「Protocol Buffers」をオープンソース化:http://japan.cnet.com/news/media/story/0,2000056023,20376854,00.htm]] * セキュリティ [#rafebb58] ** クロスサイトスクリプティング対策 [#vf122f66] ** クロスドメインアクセス対策 [#o0bd27d8] -WebAPIを公開するドメインは,他のサービスとは別のドメインにする ** 機密情報の取り扱い [#v3672077] -機密情報を提供する場合にはユーザ認証を行う ... Basic認証、Digest認証 -機密情報をJSON,JSONP形式のデータとして提供する場合には,SCRIPTタグから読み込まされた際にデータが漏洩しないよう注意 -機密情報を含んだデータをやりとりする場合には,WebAPIをHTTPSで提供 ** 不正利用対策 [#d4f755ff] -メールアドレス等をもとにユーザ登録を行い,WebAPIを利用するための認証キーを発行し,WebAPI利用の際には認証キーを必須にする -認証キーは万全ではない ** 認証API [#qb70eeae] -[[認証APIのセキュリティ:http://gihyo.jp/dev/serial/01/web20sec/0006?page=2]] * APIの例 [#ob1bd5db] ** Amazon [#s96e3a60] -[[Product Advertising API:https://affiliate.amazon.co.jp/gp/advertising/api/detail/main.html]] --[[Product Advertising API 開発者向けガイド リクエストの署名認証について(参考訳):https://affiliate.amazon.co.jp/gp/associates/help/t126?ie=UTF8&pf_rd%5Ft=501&ref%5F=amb%5Flink%5F83884676%5F6&pf%5Frd%5Fm=AN1VRQENFRJN5&pf%5Frd%5Fp=&pf%5Frd%5Fs=assoc-center-1&pf%5Frd%5Fr=&pf%5Frd%5Fi=assoc-api-detail-4-v2]] -[[Amazon Web サービス入門(Product Advertising API):http://www.ajaxtower.jp/ecs/]] ** Flicker API [#kec8e2bb] -[[初心者のためのFlickrのAPI入門:http://webservice.kabufuru.net/flickr/sitemap.php]] ** Google [#u7504389] -[[Google Code:http://code.google.com/intl/ja/]] -[[AJAX APIs Playground:http://code.google.com/apis/ajax/playground/]] --[[Google APIがブラウザーで試し放題!:http://ascii.jp/elem/000/000/212/212001/]] -[[Google Maps API:http://code.google.com/intl/ja/apis/maps/]] [#e0f5b685] --[[Google MAPS APIプログラミング:http://www.geekpage.jp/web/google-maps-api/]] -Google AJAX Language API -Google Chart API ** YouTube API [#r9c69d45] ** Twitter API [#q96149ab] ** Yahoo! [#s0a34511] -[[Yahoo! デベロッパーネットワーク:http://developer.yahoo.co.jp/]] --[[エラーメッセージおよびコード:http://developer.yahoo.co.jp/appendix/errors.html]] --[[サンプルコード集:http://developer.yahoo.co.jp/sample/]] --[[アプリケーション例:http://dir.yahoo.co.jp/computers_and_internet/programming_and_development/yahoo_developer_network/]] -[[テキスト解析Web API:http://developer.yahoo.co.jp/webapi/jlp/]] ** Amazon Simple Storage Service [#ob45ea08] ** Amazon Simple DB [#rb70f5be] ** Amazon Elastic Compute Cloud [#n0e704e3] ** SiteCatalyst [#pfd8b3c1] -[[SiteCatalyst Developer Center:https://developer.omniture.com/home]] -認証:[[OASIS Web Services Security Username Token Profile 1.0 specification:http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0.pdf]] *カテゴリ別 [#p8d64230] -[[天気予報API:http://tenkiapi.jp/]] -[[ここが危ない!Web2.0のセキュリティ - 第6回 WebAPI,認証APIのセキュリティ:http://gihyo.jp/dev/serial/01/web20sec/0006]] -[[WAFL みんなでつくる WEB-API &マッシュアップ情報サイト:http://wafl.net/]] -[[ThinkIT - PerlでWeb APIを使いたおす:http://www.thinkit.co.jp/free/article/0609/8/1/]] -[[@IT - 連載 ビジネスWebサービス最新事情:http://www.atmarkit.co.jp/fxml/tanpatsu/25websvc/01.html]] **医療系 [#b71bf9ce] -[[SCUEL:http://scuel.me/project]] -[[ソシオヘルスAPI:http://api.sociohealth.jp]]