Netscape Server Application Programming Interface ( NSAPI ) は、サーバーソフトウェア、特にWebサーバーソフトウェアを拡張するためのアプリケーションプログラミングインターフェースです。
NSAPIは、当初NetscapeのRob McCool氏によってNetscape Enterprise Serverで使用するために開発されました。NSAPIの派生版は、 Netscape Directory Serverでも使用できます。
正式な標準規格が存在しないため、NSAPIを使用するアプリケーションは、必ずしもサーバーソフトウェア間で互換性があるとは限りません。2007年現在、Sun Java System Web ServerとZeus Web Serverには、NSAPIに対する様々なレベルのサポートが存在します。
NSAPIを使用するアプリケーションは、NSAPIプラグインと呼ばれます。各プラグインは、1つ以上のサーバーアプリケーション関数(SAF)を実装します。
SAFを使用するには、まず管理者がサーバーを設定して、そのSAFを実装するプラグインをロードする必要があります。これは通常、 magnus.confという名前の設定ファイルで制御されます。プラグインがロードされたら、管理者はサーバーがSAFを呼び出すタイミングと、SAFに渡すパラメータを設定できます。これは通常、obj.confという名前の設定ファイルで制御されます。
NSAPIは、 Common Gateway Interface (CGI)と呼ばれる以前のプロトコルと比較できます。CGIと同様に、NSAPIはアプリケーションソフトウェアとWebサーバーを連携させる手段を提供します。CGIプログラムとは異なり、NSAPIプラグインはサーバープロセス内で実行されます。CGIプログラムはサーバープロセスの外で実行されるため、一般的にNSAPIプラグインよりも動作が遅くなります。しかし、サーバープロセスの外で実行することで、潜在的にバグのあるアプリケーションをサーバーソフトウェアや他のアプリケーションから隔離し、サーバーの信頼性を向上させることができます。
CGIプログラムとは対照的に、NSAPI SAFはリクエスト処理のさまざまな段階で実行するように構成できます。たとえば、単一のHTTPリクエストを処理する際に、異なるNSAPI SAFを使用して、リモートユーザーの認証と認可、要求されたURIのローカルファイルシステムパスへのマッピング、Webページの生成、およびリクエストのログ記録を行うことができます。
NetscapeがNSAPIを導入した後、MicrosoftはISAPIを開発し、Apache Software FoundationはApache API(またはASAPI:Apache Server API)を開発しました。これら3つのAPIには多くの共通点があります。たとえば、NSAPI、ISAPI、Apache APIは、アプリケーションがサーバープロセス内で実行できるようにします。さらに、これら3つはすべて、アプリケーションがリクエスト処理のさまざまな段階に参加できるようにします。たとえば、Apache APIのフックは、NSAPIで使用されるフックとよく似ています。[ 1 ]