タグ付けされた質問 「api」

使用しないでください:代わりに、「api-design」などの適切なライブラリをタグ付けしてください。APIの推奨または検索を求める質問はトピックから外れています。


27
セッターに「これ」を返すのは悪い習慣ですか?
Javaのセッターに「これ」を返すようにするのは良いことですか、悪いことですか? public Employee setName(String name){ this.name = name; return this; } このパターンは、次のようにセッターをチェーンできるので便利です。 list.add(new Employee().setName("Jack Sparrow").setId(1).setFoo("bacon!")); これの代わりに: Employee e = new Employee(); e.setName("Jack Sparrow"); ...and so on... list.add(e); ...しかし、それは一種の標準的な慣習に反します。セッターが何か便利なことをできるからといって価値があるのではないでしょうか。このパターンがいくつかの場所(JMock、JPAなど)で使用されているのを見てきましたが、一般的ではないようで、このパターンがどこでも使用されている非常に明確に定義されたAPIでのみ使用されます。 更新: 私が説明したことは明らかに有効ですが、私が本当に探しているのは、これが一般的に受け入れられるかどうか、および落とし穴や関連するベストプラクティスがあるかどうかについての考えです。Builderパターンについては知っていますが、私が説明しているものより少し複雑です。JoshBlochが説明しているように、オブジェクトを作成するための静的なBuilderクラスが関連付けられています。
249 java  design-patterns  api  oop 

15
.NETのAPIを壊す変更への決定的なガイド
.NET / CLRでのAPIのバージョン管理、特にAPIの変更がクライアントアプリケーションに影響する、または影響しない方法に関する情報をできるだけ多く収集したいと考えています。まず、いくつかの用語を定義しましょう: APIの変更 -パブリックメンバーを含む、タイプの公に見える定義の変更。これには、タイプとメンバー名の変更、タイプの基本タイプの変更、タイプの実装済みインターフェースのリストからのインターフェースの追加/削除、メンバーの追加/削除(オーバーロードを含む)、メンバーの可視性の変更、メソッドとタイプパラメーターの名前変更、デフォルト値の追加が含まれますメソッドパラメーター、型とメンバーの属性の追加/削除、および型とメンバーのジェネリック型パラメーターの追加/削除(何か見落としましたか?)これには、メンバー組織の変更やプライベートメンバーの変更は含まれません(つまり、リフレクションは考慮されません)。 バイナリレベルのブレーク -APIの変更により、古いバージョンのAPIに対してコンパイルされたクライアントアセンブリが、新しいバージョンで読み込まれない可能性があります。例:メソッドシグネチャを変更します。以前と同じ方法で呼び出すことができます(例:voidでタイプ/パラメータのデフォルト値のオーバーロードを返す)。 ソースレベルのブレーク -APIの変更により、古いバージョンのAPIに対してコンパイルするように記述された既存のコードが、新しいバージョンでコンパイルされない可能性があります。ただし、コンパイル済みのクライアントアセンブリは以前と同様に機能します。例:以前はあいまいでなかったメソッド呼び出しにあいまいさをもたらす可能性がある新しいオーバーロードを追加します。 ソースレベルの静かなセマンティクスの変更-APIの変更により、古いバージョンのAPIに対してコンパイルするように作成された既存のコードは、たとえば別のメソッドを呼び出すことによって、そのセマンティクスを静かに変更します。ただし、コードは警告/エラーなしでコンパイルを続行し、以前にコンパイルされたアセンブリは以前と同様に機能するはずです。例:既存のクラスに新しいインターフェースを実装すると、オーバーロードの解決時に別のオーバーロードが選択されます。 最終的な目標は、可能な限り多くの破壊的で静かなセマンティクスAPIの変更をカタログ化し、破壊の正確な影響と、影響を受ける言語と影響を受けない言語を説明することです。後者について詳しく説明します。一部の変更はすべての言語に普遍的に影響します(たとえば、新しいメンバーをインターフェイスに追加すると、そのインターフェイスの実装が任意の言語で機能しなくなります)。これには、最も一般的にはメソッドのオーバーロードが含まれ、一般に、暗黙的な型変換に関係するすべての処理が含まれます。CLS準拠の言語(つまり、少なくともCLI仕様で定義されている「CLSコンシューマー」のルールに準拠している言語)であっても、「最小公分母」を定義する方法はないようです。ここで誰かが私を間違っていると訂正してくれれば感謝します-したがって、これは言語ごとに行われる必要があります。最も興味深いのは、当然、.NETに付属しているもので、C#、VB、F#です。しかし、IronPython、IronRuby、Delphi Prismなどのその他のものも関連します。それがコーナーケースであるほど、それはより興味深いものになります-メンバーの削除などのことはかなり自明ですが、たとえばメソッドのオーバーロード、オプション/デフォルトのパラメーター、ラムダ型の推論、および変換演算子の間の微妙な相互作用は非常に驚くことができます時には。 これをキックスタートするいくつかの例: 新しいメソッドオーバーロードの追加 種類:ソースレベルの区切り 影響を受ける言語:C#、VB、F# 変更前のAPI: public class Foo { public void Bar(IEnumerable x); } 変更後のAPI: public class Foo { public void Bar(IEnumerable x); public void Bar(ICloneable x); } 変更前に機能し、その後壊れたサンプルクライアントコード: new Foo().Bar(new int[0]); 新しい暗黙の変換演算子のオーバーロードを追加する 種類:ソースレベルの区切り。 影響を受ける言語:C#、VB 影響を受けない言語:F# 変更前のAPI: public …

11
Restful APIサービス
WebベースのREST APIを呼び出すために使用できるサービスを作成したいと考えています。 基本的に、アプリの初期化でサービスを開始し、そのサービスにURLをリクエストして結果を返すように要求できるようにしたいと考えています。それまでの間、進行状況ウィンドウなどを表示できるようにしたいと考えています。 私は現在IDLを使用するサービスを作成しましたが、アプリ間通信に本当に必要なだけだとどこかで読みました。またpost(Config.getURL("login"), values)、アプリを押すと、アプリがしばらく一時停止しているように見えます(奇妙に思えます-サービスの背後にある考えは、別のスレッドで実行することだと思いました!) 現在、内部にpostおよびget httpメソッドを含むサービス、いくつかのAIDLファイル(双方向通信用)、サービスへの開始、停止、バインドなどを処理するServiceManagerがあり、特定のコードでハンドラーを動的に作成しています必要に応じてコールバック用。 完全なコードベースを誰かに教えて欲しくはありませんが、いくつかのポインタをいただければ幸いです。 (ほぼ)完全なコード: public class RestfulAPIService extends Service { final RemoteCallbackList<IRemoteServiceCallback> mCallbacks = new RemoteCallbackList<IRemoteServiceCallback>(); public void onStart(Intent intent, int startId) { super.onStart(intent, startId); } public IBinder onBind(Intent intent) { return binder; } public void onCreate() { super.onCreate(); } public void onDestroy() { super.onDestroy(); …

4
Pythonを使用したRESTful APIへのリクエスト
EC2インスタンスでElasticsearchの実装を使用して公開したRESTful APIを使用して、コンテンツのコーパスにインデックスを付けました。端末(MacOSX)から次のコマンドを実行して、検索のクエリを実行できます。 curl -XGET 'http://ES_search_demo.com/document/record/_search?pretty=true' -d '{ "query": { "bool": { "must": [ { "text": { "record.document": "SOME_JOURNAL" } }, { "text": { "record.articleTitle": "farmers" } } ], "must_not": [], "should": [] } }, "from": 0, "size": 50, "sort": [], "facets": {} }' 上記を使用して、python/requestsまたはを使用してAPIリクエストに変換するにはどうすればよいですかpython/urllib2(どちらを使用するかわからない-urllib2を使用しているが、リクエストの方が優れていると聞いている...)?ヘッダーなどとして渡しますか?

10
REST APIの命名規則のガイドラインはありますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 この質問を改善する REST APIを作成する場合、API内の命名規則に関するガイドラインやデファクトスタンダード(例:URLエンドポイントパスコンポーネント、クエリ文字列パラメーター)はありますか?キャメルキャップは標準またはアンダースコアですか?他? 例えば: api.service.com/helloWorld/userId/x または api.service.com/hello_world/user_id/x 注:これはRESTful API設計の問題ではなく、使用される最終的なパスコンポーネントやクエリ文字列パラメーターに使用する命名規則のガイドラインです。 任意のガイドラインをいただければ幸いです。

9
API対Webサービス[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 WebサービスとAPIの違いは何ですか?データの転送に使用されるプロトコルよりも違いはありますか?ありがとう。

13
Firebaseコンソールを使用せずにFirebase Cloud Messaging通知を送信するにはどうすればよいですか?
通知用の新しいGoogleサービスから始めFirebase Cloud Messagingます。 このコードのおかげでhttps://github.com/firebase/quickstart-android/tree/master/messaging Firebase User ConsoleからAndroidデバイスに通知を送信できました。 Firebaseコンソールを使用せずに通知を送信するAPIまたは方法はありますか?たとえば、自分のサーバーから直接通知を作成するためのPHP APIなどです。

9
APIとABIの違い
私は、Linuxシステムのプログラミングに新しいですし、読みながら、私はAPIとABIに出くわした のLinuxシステムプログラミングを。 APIの定義: APIは、あるソフトウェアがソースレベルで別のソフトウェアと通信するためのインターフェースを定義します。 ABIの定義: APIがソースインターフェイスを定義するのに対し、ABIは特定のアーキテクチャ上の2つ以上のソフトウェア間の低レベルのバイナリインターフェイスを定義します。これは、アプリケーションがそれ自体と相互作用する方法、アプリケーションがカーネルと相互作用する方法、およびアプリケーションがライブラリと相互作用する方法を定義します。 プログラムはソースレベルでどのように通信できますか?ソースレベルとは何ですか?とにかくそれはソースコードに関連していますか?または、ライブラリのソースがメインプログラムに含まれていますか? 私が知っている唯一の違いは、APIは主にプログラマーによって使用され、ABIは主にコンパイラーによって使用されることです。
192 api  abi 

5
モバイルアプリケーション用のAPIの作成-認証と承認
概観 アプリケーション用の(REST)APIを作成しようとしています。最初の/主な目的は、モバイルアプリ(iPhone、Android、Symbianなど)による使用です。私は(他の実装を研究することにより)WebベースのAPIの認証と承認のさまざまなメカニズムを調べてきました。基本的な概念のほとんどに頭を抱えていますが、まだいくつかの領域でガイダンスを探しています。私がやりたい最後のことは、ホイールを再発明することですが、自分の基準に合う標準的な解決策を見つけることができません(ただし、自分の基準を誤解しているので、遠慮なく批評してください)。さらに、私はそれを消費するすべてのプラットフォーム/アプリケーションでAPIが同じであることを望みます。 oAuth それが提供される最初のソリューションである可能性が高いことを知っているので、私は先に進んでoAuthへの反対を捨てます。モバイルアプリケーション(または、より具体的には非Webアプリケーション)の場合、認証のためにアプリケーションを(Webブラウザに移動するために)残すのは間違っているように見えます。さらに、ブラウザーがコールバックをアプリケーション(特にクロスプラットフォーム)に返す方法はありません(私は承知しています)。私はそれを行ういくつかのアプリを知っていますが、それは単に間違っていると感じて、アプリケーションUXを中断させます。 必要条件 ユーザーはユーザー名/パスワードをアプリケーションに入力します。 すべてのAPI呼び出しは、呼び出し元のアプリケーションによって識別されます。 オーバーヘッドは最小限に抑えられ、認証の側面は開発者にとって直感的です。 このメカニズムは、エンドユーザー(ログイン資格情報が公開されない)と開発者(アプリケーション資格情報が公開されない)の両方に対して安全です。 可能であれば、httpsは必要ありません(決してハード要件ではありません)。 実装に関する私の現在の考え 外部の開発者がAPIアカウントをリクエストします。彼らはapikeyとapisecretを受け取ります。すべてのリクエストには、少なくとも3つのパラメータが必要です。 apikey-登録時に開発者に与えられる タイムスタンプ-特定のapikeyの各メッセージの一意の識別子としても機能します hash-タイムスタンプのハッシュ+ apisecret apikeyは、リクエストを発行するアプリケーションを識別するために必要です。タイムスタンプはoauth_nonceと同様に機能し、リプレイ攻撃を回避/軽減します。ハッシュは、リクエストが実際に特定のAPIキーの所有者から発行されたことを確認します。 認証済みのリクエスト(ユーザーに代わって実行されるリクエスト)の場合、私はまだ、access_tokenルートを使用するか、ユーザー名とパスワードのハッシュコンボを使用するかを決めていません。いずれにしても、ある時点でユーザー名とパスワードの組み合わせが必要になります。そのため、複数の情報(apikey、apisecret、timestamp)+パスワードのハッシュが使用されます。 この点についてフィードバックをいただければ幸いです。 ちなみに、私はパスワードをハッシュせずにシステムに保存しないので、最初にパスワードをハッシュする必要があります。 結論 ちなみに、これは、一般にAPIを構築/構造化する方法の要求ではなく、アプリケーション内からのみ認証と承認を処理する方法だけです。 ランダムな考え/ボーナスの質問 リクエストの一部としてAPIキーのみを必要とするAPIの場合、APIキーの所有者以外の誰かがAPIキーを(平文で送信されるため)表示し、過度のリクエストを行って使用制限を超えてしまうことを防ぐにはどうすればよいですか?多分私はこれを考えすぎているかもしれませんが、リクエストがapikey所有者に対して検証されたことを認証するための何かがあるべきではありませんか?私の場合、それはapisecretの目的でした。ハッシュ化されない限り、表示/送信されることはありません。 ハッシュといえば、md5対hmac-sha1はどうですか?すべての値が十分に長いデータ(つまりapisecret)でハッシュされる場合、それは本当に重要ですか? 私は以前、ユーザーごとのソルトをユーザーのパスワードハッシュに追加することを検討していました。それを行うとしたら、アプリケーションは、使用されるソルトを知らなくても、一致するハッシュを作成できるでしょうか?


10
APIとSDKの違い
APIとSDKの違いを開発者以外に説明しようとしています。商用指紋ソフトウェアベンダーがSDKを提供しない可能性がある理由を説明する必要があります。 デバイスベンダーとソフトウェアベンダーの両方が、明確に定義されたAPIを公開できます。このAPIにより、他のソフトウェアプログラムは、ベンダー独自のソフトウェアコンポーネントまたはハードウェアデバイスと相互運用(書き込み)できます。 誰かがこれを明確に説明するためのより多くのアイデアを持っているなら、私は提案を非常に感謝します。開発者の専門用語を知らないプログラマーでない人に概念を説明することが目標であることを強調したいと思います。 具体的には、登録/検証を行うための指紋センサーとソフトウェアのコンテキストで、以下に私がそれを説明しようとした方法を示します。 私が指紋デバイス/センサーの製造業者であり、ソフトウェアを書く業務に従事していない場合、私の製品をより適切に売り込む方法は次のとおりです。 デバイスドライバーがさまざまなオペレーティングシステムにインストール可能であることを確認する ソフトウェア開発者が自分のデバイスと「対話」または使用するためのプログラム(たとえば、登録、検証)を作成するためのAPIを定義して提供する SDKを開発して提供し(APIを超えた1ステップ)、ソフトウェア開発者が私のデバイスで動作するプログラムを簡単かつ迅速に作成できるようにします。SDKは、ヘルパーコードライブラリ、リファレンスアプリケーション、ドキュメントなどを提供します。
187 api  sdk 

5
REST API認証
サーバー上でホストされるアプリケーションを構築しています。アプリケーション用のAPIを構築して、任意のプラットフォーム(Webアプリ、モバイルアプリ)とのやり取りを容易にしたいと考えています。私が理解していないのは、REST APIを使用するときに、ユーザーを認証する方法です。 たとえば、ユーザーがログインした後、フォーラムトピックを作成したいとします。ユーザーがすでにログインしていることをどのようにして知ることができますか?
181 api  rest 

3
REST APIログインパターン
私はREST APIを作成しています。動詞ではなく名詞を使用し、URLに焼き付けられたAPIバージョン、コレクションごとに2つのAPIパス、GET POST PUT DELETEの使用法などを使用して、apigeeの提案に厳密に従っています。 ログインシステムに取り組んでいますが、ユーザーにログインするための適切なREST方法がわかりません。この時点ではセキュリティに取り組んでいません。ログインパターンまたはログインフローのみです。(後で、HMACなどを使用して2ステップのoAuthを追加します) 可能なオプション のようなものへのPOST https://api...com/v1/login.json のようなものへのPUT https://api...com/v1/users.json 私が持っていない何か... ユーザーのログインに適切なRESTスタイルは何ですか?

4
サーバーサイドAPIを介してGoogleアナリティクスにイベントを投稿する方法はありますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 この質問を改善する イベントを投稿することで、バックエンドシステムからGoogleアナリティクスを使用しようとしています。サーバー側のGAのAPIでこれを行う方法はありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.